.done附件不适用于文件的ajax更新,适用于从文件读取
现在,将.done.fail和.always附加到ajax调用对我来说是可行的——当脚本位于html页面的底部时,这“很容易” 现在我想创建一个通用的ajax函数,只需在头文件中包含一个js文件即可使用。我成功地使用了从服务器读取数据的ajax函数(.done总是有效的)。我在向服务器写入或更新数据时遇到问题(没有返回数据)。具体情况如下- 在页面底部的脚本标记中,标准ajax添加/更新调用始终有效.done附件不适用于文件的ajax更新,适用于从文件读取,ajax,sql-update,promise,Ajax,Sql Update,Promise,现在,将.done.fail和.always附加到ajax调用对我来说是可行的——当脚本位于html页面的底部时,这“很容易” 现在我想创建一个通用的ajax函数,只需在头文件中包含一个js文件即可使用。我成功地使用了从服务器读取数据的ajax函数(.done总是有效的)。我在向服务器写入或更新数据时遇到问题(没有返回数据)。具体情况如下- 在页面底部的脚本标记中,标准ajax添加/更新调用始终有效 $.ajax({ type: 'POST', url: 'su
$.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函数,用于请求服务器数据)。done附加到从服务器返回的对象上(我在Stackoverflow上找到了这个概念)
我已经用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'); });
因此,很明显,在处理承诺的方式上,在“获取我的数据”和“这是数据,请存储它”之间存在差异
我甚至还放了一个回音“Done”代码>在更新php文件的底部只是为了返回一些东西,仍然没有运气
我用以下组合搜索了该网站和谷歌:
ajax.done附加添加更新无效承诺
没有发现任何与我的具体例子相关的东西
有人能给我一些指导吗
我提前向你表示感谢。好吧,没有人回应,我从这最后一天的黑客攻击中学到了一些东西。以下是我认为我学到的一些东西:
如果您使用ajax创建一个通用的可调用函数,那么它的行为与“内联”ajax不同——当ajax代码位于脚本标记之间的HTML页面底部时,您不会得到相同的回调操作
如果您从服务器返回一些内容,ajax函数的作用与在脚本标记之间时类似
如果不从服务器返回数据,ajax函数的作用与内联时不同
因此,我所做的是在所有仅“写入/更新”的php文件(没有返回数据)上,在每个返回少量json“垃圾”的php文件的底部添加一点代码。有了这个“垃圾”,ajax函数就像是页面底部脚本标记之间的常规ajax调用
这是一个难题,但它是有效的。下面是读取/更新php文件底部的代码,通常不会返回任何内容。它现在返回一个关于“John”的json数组:
以下是附加js文件中的函数:
function generalWriteAjax( filetocall, datatosend ) {
return $.ajax({
type: 'POST',
url: filetocall,
data: datatosend,
dataType: 'json'
});
}
以下是页面上调用.js函数的代码:
$("#clicktoupdate").click(function(e) {
var localid = $('#idnumber').val();
var firstname = $('#updatefirstname').val();
var lastname = $('#updatelastname').val();
var filetocall4update = 'supdateajaxfunctiontestbackend.php';
var datatosend4update = {localid: localid, firstname: firstname, lastname: lastname};
generalWriteAjax(filetocall4update, datatosend4update).done(function(){ alert('Done inline'); });
});//end of update click
我希望我能理解细节,但这是一个经验性的解决方案
专家们的评论会很好
谢谢你的关注 你在这里所做的看起来是正确的。这正是我编写广义效用函数的方法。它工作的原因是因为generalWriteAjax()
现在返回由$.ajax()返回的对象,该对象与promise兼容。因此,您可以像最初链接$.ajax().done()
一样链接generalWriteAjax().done()
。很好,非常感谢。但我想知道“回调”是怎么回事。当函数与其余代码位于同一页时,将发生回调。但是,当我将函数移动到js文件时,只有当我在文件底部放置回显“诸如此类”时,才会收到服务器的回调。Tim,如果我理解正确,这与javascript“成员”的范围有关,而不是与延迟/承诺有关。函数必须在作用域内,才能调用。Javascript的作用域在许多在线教程中都有很好的讨论,这些教程很容易通过您喜爱的搜索引擎找到。谢谢!我现在就开始找!在Mozilla网站上找到了一篇不错的评论-学习…学习…学习…再次感谢。
function generalWriteAjax( filetocall, datatosend ) {
return $.ajax({
type: 'POST',
url: filetocall,
data: datatosend,
dataType: 'json'
});
}
$("#clicktoupdate").click(function(e) {
var localid = $('#idnumber').val();
var firstname = $('#updatefirstname').val();
var lastname = $('#updatelastname').val();
var filetocall4update = 'supdateajaxfunctiontestbackend.php';
var datatosend4update = {localid: localid, firstname: firstname, lastname: lastname};
generalWriteAjax(filetocall4update, datatosend4update).done(function(){ alert('Done inline'); });
});//end of update click