在 jQuery 中将 JSON 数据传递给 .getJSON?

Posted

技术标签:

【中文标题】在 jQuery 中将 JSON 数据传递给 .getJSON?【英文标题】:Passing JSON data to .getJSON in jQuery? 【发布时间】: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" 【参考方案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);
);

【讨论】:

以上是关于在 jQuery 中将 JSON 数据传递给 .getJSON?的主要内容,如果未能解决你的问题,请参考以下文章

将json数据传递给onclick jquery函数

如何在 Swift(Cocoa 应用程序)中将数据传递给以前的 ViewController

将 JSON 数据传递给控制器​​方法而无需声明对象

Android - 在 onCreateViewHolder(..) 中将数据传递给 ViewHolder 构造函数

无论控制器如何,如何在 Laravel 中将数据传递给布局?

在 Swift 中将数据传递给另一个 ViewController