我在.NET应用程序中总共进行了四次Ajax调用。除了最后一个之外,其中三个工作没有任何障碍。
注意:由于我们的架构限制,我必须使用.aspx进行这些调用,而不是mypage.aspx / mymethod。
Ajax称有效:
$.ajax({
type: "POST",
url: "myaddress/GenerateOpinionHTML.aspx",
data: JSON.stringify({ id: featureId, pageNumber: pageNumberIndex }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
SOME PROCESSING (IT WORKS)
},
error: function (xhr, status, error) {
var err = xhr.responseText;
console.log(err);
}
});
和
[WebMethod]
public static string GenerateOpinionHTML(int id, int pageNumber)
{
// ...
}
Ajax称不起作用:
console.log("SUBMITOPINIONCLICK");
var param = " ";
$.ajax({
type: "POST",
url: "myaddress/SaveOpinion.aspx",
data: JSON.stringify({ parameter: param}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
console.log("SAVE OPINION SUCCESSFUL");
console.log(msg.d);
CloseLB('GiveOpinionLB');
},
error: function (xhr, status, error) {
var err = xhr.responseText;
console.log("ERROR " + "STATUS: " + status);
}
});
和
[WebMethod]
public static string SaveOpinion(string parameter)
{
// ...
}
永远不会根据日志调用Web方法SaveOpinion
。你有什么想法或建议吗?我尝试添加参数,没有参数,检查我的web.config文件(虽然我不应该,因为其他调用工作)...
我在浏览器控制台上遇到的错误是“parseerror”。我确定如果调用该方法,我不会收到错误。
答案 0 :(得分:0)
我认为您的网址应该像
url: "Your FolderName/PageName/Function Name",
像
url: "myaddress/SaveOpinion.aspx/SaveOpinion"
但是在你的代码中这是不同的,所以请检查。
答案 1 :(得分:0)
您是否检查过方法SaveOption
是否向客户返回了某些内容?
If you specify dataType as json, you should return (at least): {}
答案 2 :(得分:0)
好的,我们 “已解决” 。我们刚刚找到了一个非常脏的创可贴解决方案。
我们在我们的架构中定义了一个自定义处理程序(.ashx)作为 SaveOpinion.aspx 页面。
然后我们用jQuery调用这个自定义处理程序页面并且它有效,我们必须手动传递所有必要的参数,即。使用jQuery从textBoxes等获取所有值,而不是像我们之前那样从上下文中获取。
由于这是在某种线程中运行(我真的不知道细节),我们必须对其进行配置,以便模拟相同的用户身份验证。
无论如何,我希望这为那些有这种模糊问题的人提供了一些指导。