我有一个网页表单IndexPage.aspx。这个前端代码的脚本部分是使用ajax调用调用代码隐藏函数。这是代码:
$.ajax({
type: "POST",
url: '<%=ResolveUrl("~//IndexPage.aspx//SaveXml")%>',
data: JSON.stringify(logic),
contentType: "application/json; charset=utf-8",
dataType: "json",
//async: true,
//cache: false,
success: function (msg) {
alert("AJAX received : " + msg.d);
},
error: function (msg) {
alert("Failed : " + msg.d);
}
});
运行代码后,显示“失败”警告框,返回值为“未定义”。
功能背后的代码是:
public static string SaveXml(string logic)
{
return logic;
}
此代码隐藏功能未被调用。我在代码隐藏功能中设置的断点没有被击中。我已经尝试了几乎所有堆栈溢出的解决方案。请查看此代码中是否有任何错误。
答案 0 :(得分:0)
谢谢朋友们,
问题已解决。检查 浏览器控制台和网络 帮助我解决了很多错误。
我做了两次更改
1)将[System.Web.Services.WebMethod]添加到代码隐藏功能
2)改变了我的=&gt; 数据:JSON.stringify(logic)..... to .... =&gt;数据:&#39; {逻辑:\&#39;&#39; +逻辑+&#39; \&#39;}&#39;
我在参考此链接后做了第二次更改:"Invalid JSON primitive" in Ajax processing 在发送一个字符串时,您需要添加转义序列。
答案 1 :(得分:-1)
解决
Ajax电话:
$.ajax({
type: "POST",
url: '<%=Page.ResolveUrl("~/WebForm1.aspx/SaveXml")%>',
data: JSON.stringify({ "logic": "logic value" }),
contentType: "application/json; charset=utf-8",
dataType: "json",
//async: true,
//cache: false,
success: function (msg) {
alert("AJAX received : " + msg.d);
},
error: function (msg) {
alert("Failed : " + msg.d);
}
});
网络方法
[WebMethod]
public static void SaveXml(string logic) {
}
的Web.config
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>