Вызов jQuery $ .ajax работает в Chrome, но не в любом другом браузере. - PullRequest
0 голосов
/ 15 июня 2011

Следующий вызов прекрасно работает в Chrome, но не работает в любом другом браузере.

function getInfo(r,c,f){
  return $.parseJSON($.ajax({
      url: baseURL + 'somethingAPI/getInfo',
      data: {
        "data_r": r,
        "data_c": c,
        "data_f": f
      },
      //success: function(data){},
      dataType: "json",
      async: FALSE
    }).response);
}

Да, я использую синхронный вызов ajax и считаю, что это необходимо, поскольку я не хочу никакихдругой JS для запуска без выполнения и возврата данных.Хотя я не совсем уверен, должно ли что-то происходить с обратным вызовом успеха.

В любом случае, в Chrome я получаю объект ответа (JSON) и могу получить доступ к данным в очень хорошем состоянии.1007 * Кто-нибудь знает, что я делаю не так?

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Что касается вашего мнения о том, что вы не знаете, как избежать async: false, это то, что вы хотите достичь?

function getInfo(r, c, f, callback) {
  $.ajax({
    url: baseURL + 'somethingAPI/getInfo',
    data: {
      "data_r": r,
      "data_c": c,
      "data_f": f
    },
    dataType: "json",
    success: callback,
  });
}

getInfo('foo', 'bar', 'baz', function(response) {
  console.log(response);
});
0 голосов
/ 15 июня 2011

Вместо синтаксического анализа Json в запросе ajax, вот синтаксис, который я использую для решения этих проблем

    $.ajax({
       url: "pagegoeshere.php",                   
       timeout: 30000,
       type: "POST",
       data: 'data1='+data1+'&data2='+data2,
       dataType: 'json',
       error: function(XMLHttpRequest, textStatus, errorThrown)  {
         alert("An error has occurred making the request: " + errorThrown)
       },
       success: function(returnjson){                                                                                                   
           var returnstuff = returnjson.returnstuff;
           //Do next Javascript step here
       }
});

Вы можете запускать последующие javascript / jquery в успешном случае и «складывать» события вместе в случае успеха вашего Ajaxвызов.Таким образом, если это работает, это продолжается.В противном случае обработка ошибок может происходить в предоставленном разделе ошибок определенным вами способом.Обычно я запускаю свои вызовы ajax в обработчике кликов, но, безусловно, выполнимо запустить его в функции, которую вы выбрали.Обязательно проверьте возвращаемый JSON (например, его можно отправить по почте со страницы обработки), чтобы убедиться, что это действительный JSON. Jsonlint - ваш друг!

У меня был хром, который эффективно анализировал плохие HTML и JSON, в то время как другие браузеры не делали это несколько раз.Я подозреваю, что это что-то в том же духе вызывает ваши проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...