没有调用Ajax Webmethod

时间:2015-05-26 11:10:43

标签: c# jquery asp.net ajax

我在.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”。我确定如果调用该方法,我不会收到错误。

3 个答案:

答案 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等获取所有值,而不是像我们之前那样从上下文中获取。

由于这是在某种线程中运行(我真的不知道细节),我们必须对其进行配置,以便模拟相同的用户身份验证。

无论如何,我希望这为那些有这种模糊问题的人提供了一些指导。