通过jQuery将$ ajax发送到C#代码后面无效

时间:2014-09-26 20:44:20

标签: c# jquery asp.net ajax

当我从jquery使用ajax发布到C#时,我有无法解释的行为。

1)主页面不是我在jQuery中请求的方法。

要解决这个问题,我只需在页面加载中添加一个if,这样如果特定项目在查询字符串中,它将触发一系列命令。它确实击中了if语句并完全运行代码。有一些方法可以改变地图上的颜色。这些从未发生过。我可以设置一个标签,它会直接通过它,但标签仍未设置。

2)奇怪的是......我的页面上有一个刷新计时器。它刷新页面,现在处理更改。

以下是我在jQUery中调用方法的方法:

 function mycmethod(param)
    {
        //alert(precinct);
        $.ajax({
            url: "myPage.aspx/someMethod",
            type: 'POST',
            data: "params=" + param,
            success: function iGotData(responseJSON) {

            //    alert("Worked");

            },
            error: function (xhr, status, errorThrown) {
                console.log("Error: " + errorThrown);
                console.log("Status: " + status);
                console.log(xhr);
                alert("Didnt work:" + errorThrown);

            },

            })
        };

最初设置为async:true但是并没有什么区别。

它没有调用加载的方法是:

[WebMethod][ScriptMethod]
public Boolean someMethod(string param)
{

    setFeatures();
    GenerateMap();

    return true;
}

我怀疑它的相关性,但是我用一个特定元素的鼠标来调用jquery调用。该jquery调用一个函数,该函数调用返回一些jSON的asmx Web服务。我在返回JSON后调用mycmethod

为什么我的UI元素在页面刷新之前没有响应。如果没有,有没有办法像计时器一样强制刷新?

2 个答案:

答案 0 :(得分:3)

[WebMethods]方法应声明为静态。

我还发现您可能需要在ajax调用中指定内容类型:

contentType: "application/json; charset=utf-8"

此外,您的数据选项看起来很可疑。也许你应该将它附加到url选项:

url: "myPage.aspx/someMethod?params" + parm

或更理想地,将其作为JSON对象或JSON字符串发送:

data: {
    params: param
}

data: JSON.stringify({
    params: param
})

答案 1 :(得分:2)

如果我理解正确,您正在加载页面,然后通过ajax调用服务器并期望服务器更改当前加载页面的UI元素。

遗憾的是,它并不像那样。一旦您为页面提供服务,服务器本身就无法操作该页面而不进行刷新/回发(或沿着这些行)。

如果您想在不进行刷新/回发的情况下更新UI,可以让WebMethod返回HTML,并且您的jQuery success方法可以更新相关控件。

或者你可以使用jQuery的.get()通过ajax检索页面的新副本,并像这样更新你当前的页面。 (虽然效率较低)