【问题标题】:Problems using jQuery $.ajax to pass data使用 jQuery $.ajax 传递数据的问题
【发布时间】:2023-03-23 11:40:01
【问题描述】:

我正在使用 ASP.NET 并尝试调用带有签名的方法

[WebMethod] 
public static string GetInfo(string id){...}

使用以下 javascript:

var elementValue = $("#element").attr('id');
var d = "{id : " + elementValue + "}";
$.ajax({
            type: "POST",
            url: "../WebPage.aspx/GetInfo",
            data: d,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                //do this
            }
        });

这是行不通的。相反,如果我设置 elementValue = 2; 它工作正常。如果我出于测试目的尝试硬编码字符串值,例如elementValue = "nameToLookUp"; 失败了。为什么会发生这种情况,我该如何解决?

另一方面,为什么type: 必须是POST 而不是GET?最后我只想传递一个字符串值,我想在数据库中查找并检索一些 json 数据。

【问题讨论】:

    标签: asp.net jquery json forms asp.net-ajax


    【解决方案1】:

    你应该像这样引用参数或改变你的语法:

    var elementValue = $("#element").attr('id');
    $.ajax({
            type: "POST",
            url: "../WebPage.aspx/GetInfo",
            data: {'id':elementValue},
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                //do this
            }
    });
    

    【讨论】:

      【解决方案2】:

      要编码一个字符串,它需要被引用(在你的 JSON 字符串中)

      var d  "{id: '" + elementValue + "'}";
      

      jQuery 不要求“类型”为“POST”;是什么让你觉得它是?现在,您的服务器代码可能需要它,但这是我无能为力的(在这种特定情况下)。

      【讨论】:

      • @Daniel - 像我一样将它作为变量传递更安全......否则包含' 的字符串意味着麻烦。使用 pair 语法,jQuery 会处理这个问题。
      • @Nick 这种做法有效,但您的做法无效。有什么想法吗?
      • @iboeno - 在这种情况下取​​决于服务器,尝试{'id':elementValue}
      猜你喜欢
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 2015-03-07
      • 2011-03-22
      相关资源
      最近更新 更多