2014-10-31 3 views
1

Я получаю результат запроса ajax с использованием JSONP без каких-либо проблем. Вот мой кодJQuery/JavaScript - Сохранение ответа AJAX jSONP в переменные

function TestJSONP() 
    { 
    $.ajax({ 
     url: "https://www.sample.com/api/users.json?account_api_key=0000&unique_install_id=0000&[email protected]&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 (response);

{ 
account: 
{ 
id: "sadasdd4234", 
name: "Sample Development", 
support_email_address: "[email protected]", 
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: "[email protected]" 
} 
} 

Заранее спасибо. Кушанская Randima

+0

Что именно вы хотите? – Amy

+0

Отклик на него сам переменный. – Amy

+0

@ Ами, спасибо, что спросили. Я нашел решение для этого. Это просто. Я отправлю свой ответ за несколько минут. Все еще писал это. –

ответ

2

Попробуйте этот пример:

Просто объявить глобальную переменную вне функции и присвоить переменной отклика на эту глобальную переменную после ответа AJAX.

var jsonData; 
    function TestJSONP() 
    { 
    $.ajax({ 
     url: "https://www.sample.com/api/users.json?account_api_key=0000&unique_install_id=0000&[email protected]&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 
     } 
    }); 
} 
0

Ответ Эми верен. Отличная работа! Я переписал его более подробно. Это будет полезно для новичков.

var jasonData; 
    function TestJSONP() 
{ 
$.ajax({ 
    url: "https://www.sample.com/api/users.json?account_api_key=0000&unique_install_id=0000&[email protected]&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; 
    } 
}); 
} 
1

Я попытался проверки ответ JSon и оказывается недействительным и, вероятно, то причина вы не в состоянии установить его в переменные. Вы можете проверить ответ json на http://jsonlint.com/.

Как только вы получите исправление json, вы можете определить переменную вне области действия, и вы можете назначить ответ переменной. убедитесь, что переменная определена перед функцией.

var responseObject ; 
function TestJSONP(){ 
..... 
..... 

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

надеюсь, что это поможет.

+0

Спасибо за предоставление ссылки для проверки JSON. Но речь идет о «JSONP» (JSON с дополнением). Могу ли я использовать его для проверки JSONP (еще я не смог попробовать это самостоятельно) –

+0

Да, вы также можете проверить JSONP. Единственное различие, которое я знаю, это то, что ответ JSONP происходит из другого домена, однако формат для обоих одинаковый. Если есть какие-либо различия в формате, пожалуйста, дайте мне знать или если вы знаете – anup

+0

любой URL-адрес, на который я могу ссылаться. благодаря – anup

Смежные вопросы