【问题标题】:Passing JSON data to .getJSON in jQuery?在 jQuery 中将 JSON 数据传递给 .getJSON?
【发布时间】:2012-01-04 03:43:33
【问题描述】:

我正在尝试将 JSON 对象传递给 .getJSON,但我不断收到错误的请求错误。这就是我正在尝试的:

var data = {
    "SomeID": "18",
    "Utc": null,
    "Flags": "324"
};

$.getJSON("https://somewhere.com/AllGet?callback=?", JSON.stringify(data), function (result) {
    alert(result);
});

目前要让它工作,我必须这样做,但我不喜欢我必须手动构造查询字符串:

$.getJSON("https://somewhere.com/AllGet?SomeID=18&Utc=&Flags=324&callback=?", null, function (result) {
        alert(result);
    });

有人知道如何通过传入 JSON 对象来简化请求吗?如有任何帮助或建议,我将不胜感激。

【问题讨论】:

  • 试试$.param(data);它输出"SomeID=18&Utc=null&Flags=324"

标签: javascript jquery json jsonp getjson


【解决方案1】:

我尝试对 json 进行编码,它成功了。

不确定它的效率或实用性,分享它只是为了解决上述问题。

 $.getJSON("https://somewhere.com/AllGet?data="+encodeURI(JSON.stringify(data)), function (result) {
        alert(result);
 });

【讨论】:

    【解决方案2】:

    为什么需要回调? (等等,jsonp)我会先尝试以下方法:

    $.getJSON("https://somewhere.com/AllGet?callback=?", data, function(result) {
      alert(result);
    });
    

    在萤火虫的某个地方,看看它是否返回你所期望的。我不确定字符串作为数据的作用,但只是给一个对象就可以了。

    【讨论】:

      【解决方案3】:

      你不需要JSON.stringfy,只需要传递JSON对象,jQuery会用它构造你的URL参数

      $.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) {
          alert(result);
      });
      

      【讨论】:

        【解决方案4】:
        $.getJSON("https://somewhere.com/AllGet?callback=?", {SomeID:"18",Utc:null,Flags:"324"}, function (result) {
                alert(result);
            });
        

        var data = {
            "SomeID": "18",
            "Utc": null,
            "Flags": "324"
        };
        
        
        $.getJSON("https://somewhere.com/AllGet?callback=?",
         {
        SomeID:data.SomeID,
        Utc:data.Utc,
        Flags:data.Flags
        },
         function (result) {
                    alert(result);
                });
        

        【讨论】:

          【解决方案5】:

          根据网站,这是有效的:

          $.getJSON("test.js", { name: "John", time: "2pm" }, function(json) {
              alert("JSON Data: " + json.users[3].name);
              });
          

          那就试试吧:

          var data = {
              SomeID: "18",
              Utc: null,
              Flags: "324"
          };
          
          $.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) {
              alert(result);
          });
          

          编辑:http://api.jquery.com/jQuery.getJSON/

          【讨论】:

            【解决方案6】:

            当您向 jQuery GET 请求提供数据时,它需要一个 对象,而不是 JSON 字符串,用于构造查询字符串参数。尝试将您的原始代码更改为:

            $.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) {
                alert(result);
            });
            

            【讨论】:

              【解决方案7】:

              不要使用 JSON.stringfy,直接传递数据。

              $.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) {
                  alert(result);
              });
              

              【讨论】:

                猜你喜欢
                • 2023-03-21
                • 1970-01-01
                • 1970-01-01
                • 2012-05-01
                • 2020-09-19
                • 1970-01-01
                • 2011-11-13
                • 2015-11-11
                • 1970-01-01
                相关资源
                最近更新 更多