Javascript等待函数(jQuery)
我的功能有问题 有:Javascript等待函数(jQuery),javascript,jquery,Javascript,Jquery,我的功能有问题 有: function set_session(session_name, hodonota) { var link = '/run/set_session.html?what=' + session_name + '&val=' + hodonota; $("#test").load(link, function (response, status, xhr) { if (status == "error") {
function set_session(session_name, hodonota) {
var link = '/run/set_session.html?what=' + session_name + '&val=' + hodonota;
$("#test").load(link, function (response, status, xhr) {
if (status == "error") {
var msg = 'Error';
alert(msg);
}
});
}
我还有其他检查数据的功能:
function make() {
var error = false;
var a = $("#val").val();
if (a != '') {
set_session('a', a);
} else {
error = true;
}
if (error == false) {
window.location.href = "/sended.php";
}
}
如果我尝试make和value If“”,则一切正常,但如果value!=“”,windows.location在set_会话完成之前启动。设置会话警报“错误”:(
提前感谢您的帮助。既然您正在重定向用户,您可以将重定向挂接到
load()
函数的success
回调函数中。您的整个代码应该如下所示:
function make()
{
var error = false,
a = $.trim($("#val").val());
if(a != '')
{
var link = '/run/set_session.html?what=a&val=' + a;
$("#test").load(link, function (response, status, xhr) {
if (status == "error") {
var msg = 'Error';
alert(msg);
}
else
{
window.location.href = '/sended.php';
}
});
}
else
{
return false;
}
}
我也对你的代码做了一些调整。哦,顺便说一下,过去分词“send”是“sent”,而不是“sended”
还请注意,@YuriyGalanter的观点是正确的。如果您的站点中有一个允许操作会话变量的AJAX脚本,这可能代表一个严重的安全问题!这是怎么回事?感谢@11684的
complete()
-语法
function make() {
var val = $("#val").val();
if (val != '') {
set_session('a', val, toSendPage);
}
}
function set_session( session_name, hodonota, callback ) {
var link = '/run/set_session.html?what=' + session_name + '&val=' + hodonota;
$("#test").load(link, function (response, status, xhr) {
if (status == "error") {
var msg = 'Error';
alert(msg);
}
}).complete( callback );
}
function toSentPage() {
window.location.href = "/sended.php";
}
是的,它是“发送的”而不是“发送的”。为什么不在
load
的complete
回调函数中处理它呢?你好,本,我怎么能编辑这个函数呢?我不知道,它是如何工作的。我同意。你最好的选择是执行[…]加载([…]).complete(函数(){make();});
而不是您现在如何调用make。请告诉我您没有从客户端脚本设置服务器端会话变量。请参阅我的答案。尽管如此,@YuriyGalanter提出了一个有效的观点。如果您的站点中有一个允许操作会话变量的AJAX脚本,这可能代表一个严重的安全问题!Thnak you BenM.但是,如果我需要更多的set函数,我怎么能做到这一点呢?同样徒劳的是,只需将这两个URL参数作为变量来处理。你可能会更好地将它们作为对象传递,而不是将它们添加到字符串中。由于缺乏可读性,倾向于否决(即使作者使用两种方法也有更好的可读性)您通过添加“return false”更改了功能
.BenM您能为更多的set\u会话编辑函数吗?当所有操作完成后,转到url吗?非常感谢!这完成
语法有效吗?根据,\load
返回一个jQuery对象,而不是承诺/jqXHR。除此之外,jQuery承诺将使用done/always,not complete。@numbers1311407我不知道,我从帖子上的评论中得知,假设他知道自己写了什么。你知道人们怎么说假设:-消费是生命中唯一的确定吗?开玩笑,我不得不同意你。