Ajax Post返回完整的aspx页面

时间:2017-02-09 11:07:14

标签: jquery asp.net ajax

我试图发一个ajax调用来发布到web方法,每当我发布它时,它只返回整个aspx页面。 这是Ajax调用:

var $jq =jQuery.noConflict();
    $jq.ajax({
        type: "POST",
        url: "Default2.aspx/sortxml",
    data: xmlDoc,

        complete: function (xhr, status) {
    error: function (xhr, status, text) {
              console.log(xhr.status);
              console.log(xhr.text);
              console.log(xhr.responseText);
             }

        if (status === 'error' || !xhr.responseText) {

            alert(xhr.responseText);
            document.getElementById("response").value = xhr.responseText;
        }
        else {
            var data = xhr.responseText;
            //alert(data);
            document.getElementById("response").value = data;

        }
    }

这是web方法,我大量简化它,它位于名为“Default2.aspx”的页面后面的代码上

[System.Web.Services.WebMethod()]
    public static string sortxml()
{
return ("hi");}

它从中提取数据的形式是:

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager2" runat="server"></asp:ScriptManager>

<button onclick="cmdButtonSend();" type="button" >Call Component Engine</button>
    <br /><p>
<asp:TextBox id="TextInput" runat="server" TextMode="MultiLine" Wrap="false"  ></asp:TextBox>

         </p>
    <asp:TextBox id="response" runat="server" TextMode="MultiLine" Wrap="true"  ></asp:TextBox>
     <p class ="tim">  Set Timeout
    <asp:TextBox id="timer1" runat="server" TextMode="MultiLine" Wrap="false"  ></asp:TextBox></p>

           </form>

当我运行ajax调用时,它返回表单所在的整个aspx页面。

为什么会这样?

编辑:Ajax调用是JavaScript方法的一部分,它被称为cmdButtonSend()的一部分;方法

1 个答案:

答案 0 :(得分:0)

所以我想出了造成这些问题的原因。 我不得不这样做,以便它知道它正在发送Json并期待它回来。这需要对ajax调用和web方法进行轻微修改。

var $jq =jQuery.noConflict();
    $jq.ajax({
        type: "POST",
        url: "Default2.aspx/sortxml",
        data: "{XMLDOC: 'xmlDoc'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        complete: function (xhr, status) {
    error: function (xhr, status, text) {
              console.log(xhr.status);
              console.log(xhr.text);
              console.log(xhr.responseText);
             }

        if (status === 'error' || !xhr.responseText) {

            alert(xhr.responseText);
            document.getElementById("response").value = xhr.responseText;
        }
        else {
            var data = xhr.responseText;
            //alert(data);
            document.getElementById("response").value = data;

        }
    }

注意

的介绍
contentType: "application/json; charset=utf-8",
        dataType: "json",

然后不得不改变数据部分

data: "{XMLDOC: 'xmlDoc'}",

在web方法中,我必须包含新的XMLDOC变量并且它可以正常工作

    [System.Web.Services.WebMethod()]
    public static string sortxml(string XMLDOC)
    {

return ("hi");}