JQuery расширить параметры AJAX - PullRequest
1 голос
/ 30 июня 2011

Ой,

У меня есть центральная функция, которая выполняет запросы AJAX по всей моей форме заказа.У меня есть настройки по умолчанию (по сути, ajaxSetup, но я не хотел их использовать), и тогда каждая функция передает свои собственные настройки / параметры.* ИСПОЛЬЗОВАНИЕ jQuery 1.6.1

Единственная проблема заключается в том, что я использую $ .extend (ни глубокое расширение, ни нормальная работа).Кажется, расширение не выполняет некоторые функции.Странно то, что это сработало однажды, но теперь это не так, и я не могу понять, почему: |.Запрос ajax выполняется, но ничего не происходит в случае успеха ... В этом случае я вызываю sendData с помощью $ .when (this.sendData (params, «snapshotCache»))). Then (делать вещи);мой код:

    this.sendData = function(options, cacheIndex) {

  var defaults = {
    url: this.dataPath + options.action,
    data: 'qs=NULL',
    type: 'POST',
    dataType: 'text/html', //(THIS SHOULD HAVE BEEN just 'text')
    success: function(result, textStatus, xhr) {
      console.log(cacheIndex)
      console.log('HELLO')
      if(typeof cacheIndex !== 'undefined') {
        var qs = settings.data;
        cacheObj.cacheAdd(qs, cacheIndex, result);
        alert(cacheObj);
      }
    },
    error: function(xhr, textStatus, errorThrown) {
      if(textStatus === 'timeout') {
         $.ajax(this); // retry
         return;
       } else if(errorThrown === 500) {
        alert(ERROR['500Msg']);
       }
    }
  };
  var settings = $.extend(true, defaults, options);
  return $.ajax(settings);
};

Вот что находится в настройках объекта, прежде чем я вернусь:

url => /order/getsnapshot
data => micro=img%2Fstore%2Fcomp-08.png%2Cimg%2Fstore%2Fcomp-08n.png%2Cimg%2Fstore%2Fcomp-08t.png%2Cimg%2Fstore%2Fcomp-08a.png%2Cimg%2Fstore%2Fcomp-08l.png%2Cimg%2Fstore%2Fcomp-08h.png&outPath=1242353103103.png
type => POST
dataType => text/html
success => function (result, textStatus, xhr) { console.log(cacheIndex); console.log("HELLO"); if (typeof cacheIndex !== "undefined") { var qs = settings.data; alert(cacheObj); } }
error => function (xhr, textStatus, errorThrown) { if (textStatus === "timeout") { $.ajax(this); return; } else if (errorThrown === 500) { alert(ERROR['500Msg']); } }
action => getsnapshot
cache => true

1 Ответ

3 голосов
/ 30 июня 2011

Звонить $.when() не нужно.Ниже достаточно:

this.sendData(params, 'snapshotCache')).done(function(){ ... });

Имейте в виду, что с новыми отсрочками, done() как успех, а fail() как ошибка.

Кроме того, я бы просто сделал это для вашегонастройки объектов:

var settings = {};
$.extend(true, settings, defaults, options);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...