将 .done .fail 和 .always 附加到 ajax 调用现在对我来说是可行的——当脚本位于 html 页面的底部时,这很“容易”。
现在我想创建一个通用的 ajax 函数,只需在标头中包含一个 js 文件即可使用。我已经成功使用从服务器读取数据的 ajax 函数(.done 总是有效的)。当我只是将数据写入或更新到服务器时(不返回数据),我遇到了问题。以下是具体情况——
始终有效的标准 ajax 添加/更新调用 - 在页面底部的脚本标记中。
$.ajax({
type: 'POST',
url: 'supdateajaxfunctiontestbackend.php',
data: {localid: localid,
firstname: firstname,
lastname: lastname}
}).done(function(){ alert('Done with Add/Update!'); });
如果我在页面底部创建一个函数,或者将该函数添加到 js 文件中,则此添加/更新始终有效。
function generalWriteAjax(filetocall, datatosend) {
$.ajax({
type: 'POST',
url: filetocall,
data: datatosend
}).done(function(){ alert('Done with Add/Update!'); });
}
我想将 .done 从函数中分离出来,并在附加到单独的函数/对象时调用 .done。当从服务器返回数据时,以下代码可以正常工作。(请求服务器数据的单独的 generalReadAjax 函数)。完成后附加到从服务器返回的对象上(我在 Stackoverflow 上找到了这个概念)。
backenddata = generalReadAjax('readtesttablebackend.php');
displayData(backenddata);
backenddata.done(function(){ alert("Done with read!"); });
});
我已经使用 WRITE/UPDATE only 功能尝试了以下所有方法,但它们都不起作用。
generalWriteAjax(filetocall4update, datatosend4update).done(function(){ alert('Done function'); });
generalWriteAjax(filetocall4update, datatosend4update).when(function(){ alert('Done function'); });
generalWriteAjax(filetocall4update, datatosend4update).then(function(){ alert('Done function'); });
generalWriteAjax(filetocall4update, datatosend4update);
createdonealert = generalWriteAjax(filetocall4update, datatosend4update);
createdonealert.done(function(){ alert('Done function'); });
createdonealert.when(function(){ alert('Done function'); });
createdonealert.then(function(){ alert('Done function'); });
所以很明显,在“去获取我的数据”和“这是数据,请存储它”之间处理承诺的方式是不同的。
我什echo "Done";
至在更新 php 文件的底部放了一个只是为了返回一些东西,但仍然没有运气。
我用以下组合搜索了这个网站和谷歌:
ajax .done attach add update not working promise
并没有发现任何与我的具体例子有关的东西。
有人可以给我一些指导吗?
我提前谢谢你。