我的功能有问题。
有:
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'',一切正常,但如果值!='',则windows.location在set_session完成之前启动。设置会话警报'错误':(
提前感谢您的帮助。
答案 0 :(得分:0)
由于您正在重定向用户,因此您只需将重定向挂钩到success
函数的load()
回调函数即可。您的整个代码应如下所示:
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'的过去分词是'发送',而不是'发送'。
请注意@YuriyGalanter提出了一个有效的观点。如果您的站点中有一个允许操作会话变量的AJAX脚本,这可能代表严重安全问题!
答案 1 :(得分:0)
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";
}
是的,'发送'不'发送'。