Jquery / JavaScript – 将Ajax jSONP响应存储到变量中

我正在使用JSONP获得ajax请求的结果,没有任何问题。 这是我的代码

function TestJSONP() { $.ajax({ url: "https://www.sample.com/api/users.json?account_api_key=0000&unique_install_id=0000&email_address=test@test.com&locale_id=en-US&operating_system_version=6.1.7601.65536&operating_system_architecture=64&outlook_version=2013&version=0.0.5.0", // the name of the callback parameter, as specified by the YQL service jsonp: "callback", // tell jQuery we're expecting JSONP dataType: "jsonp", // tell YQL what we want and that we want JSON data: { q: "select title,abstract,url from search.news where query=\"cat\"", format: "json" }, // work with the response success: function (response) { console.log(response); // server response } }); } 

我需要将响应数据设置为我可以在该请求之外访问的变量。 请指教。 (我读了一些类似的问题,我无法将它们的解决方案应用于我的。因为我认为我的响应数据结构有点不同)请参阅下面的块以查看console.log的结果(响应);

 { account: { id: "sadasdd4234", name: "Sample Development", support_email_address: "test1@sample.com", report_threat_button_text: "text1", successful_report_text: "text2", false_report_text: "text3", }, current_plugin_version: "0.0.1", id: "trt45rety", status: "ok", type: "api_response", user: { id: "erwrretV0", language: "en", first_name: "Robert", last_name: "Croos", email_address: "test2@sample.net" } } 

提前致谢。 Kushan Randima

试试这个例子:

只需在函数外部声明一个Global变量,并在ajax响应之后将响应变量分配给该全局变量。

  var jsonData; function TestJSONP() { $.ajax({ url: "https://www.sample.com/api/users.json?account_api_key=0000&unique_install_id=0000&email_address=test@test.com&locale_id=en-US&operating_system_version=6.1.7601.65536&operating_system_architecture=64&outlook_version=2013&version=0.0.5.0", // the name of the callback parameter, as specified by the YQL service jsonp: "callback", // tell jQuery we're expecting JSONP dataType: "jsonp", // tell YQL what we want and that we want JSON data: { q: "select title,abstract,url from search.news where query=\"cat\"", format: "json" }, // work with the response success: function (response) { console.log(response); // server response jsonData = response; // you can use jsonData variable in outside of the function } }); } 

我尝试validationjson响应,它似乎无效,可能这就是你无法将其设置为变量的原因。 您可以在http://jsonlint.com/上validationjson响应。

一旦纠正了json响应,就可以定义函数范围之外的变量,并可以将响应分配给变量。 确保在函数之前定义变量。

 var responseObject ; function TestJSONP(){ ..... ..... // work with the response success: function (response) { responseObject = JSON.parse(response); } 

希望这可以帮助。

艾米的回答是正确的。 做得好! 我将用更多细节重新编写它。 这对初学者很有帮助。

 var jasonData; function TestJSONP() { $.ajax({ url: "https://www.sample.com/api/users.json?account_api_key=0000&unique_install_id=0000&email_address=test@test.com&locale_id=en-US&operating_system_version=6.1.7601.65536&operating_system_architecture=64&outlook_version=2013&version=0.0.5.0", // the name of the callback parameter, as specified by the YQL service jsonp: "callback", // tell jQuery we're expecting JSONP dataType: "jsonp", // tell YQL what we want and that we want JSON data: { q: "select title,abstract,url from search.news where query=\"cat\"", format: "json" }, // work with the response success: function (response) { console.log(response); // server response //Save Account Data account_id = response.account.id; name = response.account.name; support_email_address = response.account.support_email_address; report_threat_button_text = response.account.report_threat_button_text; successful_report_text = response.account.successful_report_text; false_report_text = response.account.false_report_text; //Main Object Data current_plugin_version = response.current_plugin_version; id = response.id; status = response.status; type = response.type; //Save User Data user_id = response.user.id; language = response.user.language; first_name = response.user.first_name; last_name = response.user.last_name; email_address = response.user.email_address; } }); }