【问题标题】:Just another jQuery AJAX not POST parameters correctly只是另一个 jQuery AJAX 不能正确 POST 参数
【发布时间】:2012-08-03 06:21:30
【问题描述】:

我搜索了很多类似的情况,但没有一个可以解决我的问题。请看我的代码:

JavaScript:

    $.ajax({
        type: 'POST',
        url: 'alarmInfo.aspx',
        data: {request:'BasicGpaInfo'},
        dataType: "json",
        success: function (data) {
            alert(data);
        },
        error: function () {
            alert("Error in loading alarm information!");
        }
    });

ASP.NET:

    protected void Page_Load(object sender, EventArgs e)
    {
            if (Request.Form["request"] == "BasicGpaInfo")
            {
                Response.Write(BasicGpaInfo());
            }
            else
            {
                Response.Write("Nothing");
            }
    }

这总是返回“Nothing”并且断点告诉 Request.Form 为空。我已经尝试过使用GETRequest.QueryString,这给出了相同的情况。

我猜想 ajax 函数中的 data 有问题,我尝试了以下无济于事的方法:

        data: $.param({request:'BasicGpaInfo'})
        data: "{request:'BasicGpaInfo'}"
        data: {request:'BasicGpaInfo'}

它不适用于所有 Web 浏览器。

请给点建议。谢谢!

【问题讨论】:

  • 我很确定问题不在于 javascript——那里的一切都井井有条。只需使用一个普通的 javascript 对象,不需要$.param。你在使用 Firefox,如果是,你有 Firebug 吗?您可以使用 Firebug 或使用 Chrome 的内置控制台检查发送的帖子数据。在 Chrome 中,按 F12,在 Firefox 中,安装 Firebug,然后按 F12。
  • Firefox 或 Chrome 中没有发布参数

标签: asp.net ajax jquery get


【解决方案1】:

我测试了您的代码,它运行良好。但是它总是返回“加载警报信息时出错!”因为您没有从服务器返回 Json。

Javascript很好,一旦你返回json,它就会成功。

您正在返回整个页面,并且您的 ajax 方法正在从 BasicGpaInfo() 获取整个 html 而不是 Json

尝试在alert中设置断点,你会看到所有的数据都在data里面

error: function (data) {
alert("Error in loading alarm information!");
}

或者试试

error: function (data) {
alert(data);
}

这是完整的代码

$.ajax({
                type: 'POST',
                url: 'Default.aspx/BasicGpaInfoWebMethod',
                data: { request: 'BasicGpaInfo' },
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    alert(data);
                },
                error: function (data) {
                    alert("Error in loading alarm information!");
                    //alert(data); // uncomment to see the whole response
                }
            });

您的网络方法将是:

 [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string BasicGpaInfoWebMethod(string request)
    {
        return request;
    }

【讨论】:

    【解决方案2】:

    在发布之前试试这个 JSON.stringify。在 IE 中使用 JSON.stringify

     $.ajax({
            type: 'POST',
            url: 'alarmInfo.aspx',
            data: JSON.stringify({ request: 'BasicGpaInfo'}),
            dataType: "json",
            success: function (data) {
                alert(data);
            },
            error: function () {
                alert("Error in loading alarm information!");
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2014-07-04
      • 1970-01-01
      • 2015-04-18
      • 1970-01-01
      • 2017-03-09
      相关资源
      最近更新 更多