Ajax调用无法达到服务器端方法?

时间:2013-12-17 13:25:24

标签: c# javascript asp.net jquery

当我点击按钮时,它会在Ajax调用之后调用JavaScript方法,如果我在Firefox浏览器上调试它比调用服务器端方法setMandate()而不是直接点击按钮,我不知道是什么发生?

<div>
        <button id="GetMandateBtn" onclick="SetMandate()" disabled>Get Mandate</button>
</div>

function SetMandate() {
    var clients = new Array();
    var queryNo = 0;
    $("#DivMandateClients input:checked").each(function () {
        clients.push($(this).attr('value'));
    });
    if (clients == "")
        clients.push(0);
    var contacts = new Array();
    $("#DivMandateClientsContact input:checked").each(function () {
        contacts.push($(this).attr('value'));
        var value = $(this).val();
    });
    if (contacts == "")
        contacts.push(0);
    var candidateStatus = new Array();
    $("#candidateStatus input:checked").each(function () {
        candidateStatus.push($(this).attr('value'));
    });
    if (candidateStatus == "") {
        candidateStatus.push(0);
        queryNo = 0;
    }

    var mandateRegion = new Array();
    $("#MandateRegion input:checked").each(function () {
        mandateRegion.push($(this).attr('value'));
    });
    if (mandateRegion == "") {
        mandateRegion.push(0);
        queryNo = 0;
    }
    var mandateCountry = new Array();
    $("#MandateCountry input:checked").each(function () {
        mandateCountry.push($(this).attr('value'));
    });
    if (mandateCountry == "") {
        mandateCountry.push(0);
        queryNo = 0;
    }
    var researchers = new Array();
    $("#Researcher input:checked").each(function () {
        researchers.push($(this).attr('value'));
    });
    if (researchers == "") {
        researchers.push(0);
        queryNo = 0;
    }
    if (StartDateTxt.value.trim() != "" && EndDateTxt.value.trim() != "") {
        $.ajax({
            url: "/WebService/GetMandate",
            data: "{ 'startDate' : '" + StartDateTxt.value + "','endDate' : '" + EndDateTxt.value + "','clients' : '" + clients + "','contacts' : '" + contacts + "','candidateStatus' : '" + candidateStatus + "','mandateRegion' : '" + mandateRegion + "','mandateCountry' : '" + mandateCountry + "','researchers' : '" + researchers + "','queryNo' : '" + queryNo + "'}",
            dataType: "json",
            type: "POST",
            dataFilter: function (data) { return data; },
            success: function (data) {
                var mandate = $("#Mandate");
                mandate.html("");
                if (data != null) {

                    if (data != "")
                        mandate.append($("<input type='checkbox' id='chklstMandate-2' name='Mandate' value='-2'/>&nbsp;<label style='display:inline;' id='lblMandate-2'>Select All</label><hr/>"));

                    $.each(data, function (index, value) {
                        mandate.append($("<input type='checkbox' id='chklstMandate" + data[index].ResearcherId + "' name='Mandate' value='" + data[index].ResearcherId + "'/>&nbsp;<label style='display:inline;' id='lblMandate" + data[index].ResearcherId + "'>" + data[index].MandaName + "</label><br />"));
                    });

                    $("#chklstMandate-2").click(function (event) {
                        if ($("#chklstMandate-2").is(":checked"))
                            $("#Mandate").each(function () {
                                $("input[type=checkbox][name='Mandate']").attr("checked", true);
                            });
                        else if ($("#chklstMandate-2").not(":checked"))
                            $("#Mandate").each(function () {
                                $("input[type=checkbox][name='Mandate']").attr("checked", false);
                            });
                    });
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("Error on Loading Mandate" + errorThrown);
            }
        });
    }
};


public ActionResult GetMandate()
        {

            // InputStream contains the JSON object you've sent
            String jsonString = new StreamReader(this.Request.InputStream).ReadToEnd();

            // Deserialize it to a dictionary
            var dic = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<String, string>>(jsonString);
            var startDate = Convert.ToDateTime(dic["startDate"]);//DateTime.Parse(dic["startDate"]);
            var endDate = DateTime.Parse(dic["endDate"]);
            string[] clients = dic["clients"].Split(',');
            string[] contacts = dic["contacts"].Split(',');
            string[] candidateStatus = dic["candidateStatus"].Split(',');
            string[] mandateRegion = dic["mandateRegion"].Split(',');
            string[] mandateCountry = dic["mandateCountry"].Split(',');
            string[] researchers = dic["researchers"].Split(',');
            int queryNo = int.Parse(dic["queryNo"]);

            //bool isClientIdSelected = true;
            List<int> clientIds = new List<int>();
            foreach (var clnt in clients)
            {
                if (clnt != "-2" && clnt != "0")
                    clientIds.Add(int.Parse(clnt));
            }
            List<int> contactIds = new List<int>();
            foreach (var conts in contacts)
            {
                if (conts != "-2" && conts != "0")
                    contactIds.Add(int.Parse(conts));
            }
            List<int> candidateStatusIds = new List<int>();
            foreach (var status in candidateStatus)
            {
                if (status != "-2" && status != "0")
                    candidateStatusIds.Add(int.Parse(status));
            }
            List<int> mandateRegionIds = new List<int>();
            foreach (var region in mandateRegion)
            {
                if (region != "-2" && region != "0")
                    mandateRegionIds.Add(int.Parse(region));
            }
            List<int> mandateCountryIds = new List<int>();
            foreach (var country in mandateCountry)
            {
                if (country != "-2" && country != "0")
                    mandateCountryIds.Add(int.Parse(country));
            }
            List<int> researcherIds = new List<int>();
            foreach (var researcher in researchers)
            {
                if (researcher != "-2" && researcher != "0")
                    researcherIds.Add(int.Parse(researcher));
            }

            if (queryNo == 0)
            {
                var mandaetFromDB = (from mc in dbContext.MandateCandidates
                                     join m in dbContext.Mandates on mc.MandateId equals m.MandateId
                                     join mr in dbContext.MandateResearchers on mc.MandateId equals mr.MandateId
                                     where m.StartDate >= startDate
                                    && m.EndDate <= endDate
                                    && clientIds.Contains(m.ClientId)
                                    && contactIds.Contains(m.ContactId)
                                    && candidateStatusIds.Contains(mc.CandidateStatusId ?? 0)
                                     select new { MandateId = m.MandateId, MandaName = m.Name, ResearcherId = mr.ResearcherId, ClientId = m.ClientId }).ToList();
                return Json(mandaetFromDB, JsonRequestBehavior.AllowGet);
            }
            else
            {
                var mandaetFromDB = (from mc in dbContext.MandateCandidates
                                     join m in dbContext.Mandates on mc.MandateId equals m.MandateId
                                     join mr in dbContext.MandateResearchers on mc.MandateId equals mr.MandateId
                                     where m.StartDate >= startDate
                                    && m.EndDate <= endDate
                                    && clientIds.Contains(m.ClientId)
                                    && contactIds.Contains(m.ContactId)
                                    && candidateStatusIds.Contains(mc.CandidateStatusId ?? 0)
                                    && mandateRegionIds.Contains(m.RegionId ?? 0)
                                    && mandateCountryIds.Contains(m.MandateCountryId ?? 0)
                                    && researcherIds.Contains(mr.ResearcherId ?? 0)
                                     select new { MandateId = m.MandateId, MandaName = m.Name, ResearcherId = mr.ResearcherId, ClientId = m.ClientId }).ToList();
                return Json(mandaetFromDB, JsonRequestBehavior.AllowGet);
            }
            //return Json(mandaetFromDB, JsonRequestBehavior.AllowGet);
        }

0 个答案:

没有答案