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
答案 0 :(得分:3)
不需要调用$.when()
。以下就足够了:
this.sendData(params, 'snapshotCache')).done(function(){ ... });
请注意新的延迟,done()
就像成功一样,fail()
就像错误一样。
另外,我会为您的设置对象执行此操作:
var settings = {};
$.extend(true, settings, defaults, options);