我试图发一个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()的一部分;方法
答案 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");}