jQuery扩展了ajax参数

时间:2011-06-30 03:42:29

标签: ajax jquery extend

OHEY,

我有一个中央函数,可以在整个订单表单中运行AJAX请求。我有默认设置(基本上是ajaxSetup,但我不想使用它),然后每个函数都传入自己的设置/参数。 *使用jQuery 1.6.1

唯一的问题是我正在使用$ .extend(既不是深度扩展也不是正常工作)。似乎扩展不带有一些功能。奇怪的是,它曾经工作过一次,但现在它没有,我无法弄清楚原因:|。 ajax请求确实运行,但成功没有任何反应...我在这个实例中用$ .when(this.sendData(params,'snapshotCache'))调用sendData。然后(做东西);

这是我的代码:

    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 个答案:

答案 0 :(得分:3)

不需要调用$.when()。以下就足够了:

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

请注意新的延迟,done()就像成功一样,fail()就像错误一样。

另外,我会为您的设置对象执行此操作:

var settings = {};
$.extend(true, settings, defaults, options);