我有一个问答类型的应用程序。每个问题有两个答案,其值为1或2。测验结束后,如果他们的分数低于10分,他们会被重定向到一个页面。
这是我对此部分的代码。
while (n < numResults) {
increment = minScore + (interval * n);
if (totalScore <= increment) {
if(totalScore <= 10) {
$.ajax({
method: "POST",
url: "handleData.php",
dataType: "json",
data: { answers: ansArray, page: window.location.href }
})
.done(function( msg ) {
window.location.href("www.page2.html");
});
}
return;
} else {
n++;
}
}
我有几件事要解决。首先,在重定向之前,一些数据(答案和url(被发布到PHP,这样我就可以处理它。我传递的一件事是当前窗口的url。我这么做的原因是url的格式类似
www.page1.com?a=1&b=2&c=3
在PHP中,我解析这个url并获取值。
我的第一个问题是,尽管数据成功地发送到PHP并进行了处理,并返回了Success的响应,但done函数似乎从未启动,因此不会发生重定向(我在该函数中发出了警报以确保其不发射(。在PHP中,在我处理数据后,我会进行
var_dump($response); //Outputs Success
return json_encode($response);
我想做的第二件事是重定向url(page2.html(。在这个页面中,我有一个按钮。这个按钮有一个标准链接,然后我需要从最初的url中给它一些参数。所以这个页面按钮可能有点像
www.externallink.com?a=1&c=2
如何将原始url参数放入重定向url上的按钮中?
感谢
使用下面的函数代替done:
$.ajax({
method: "POST",
url: "handleData.php",
dataType: "json",
data: { answers: ansArray, page: window.location.href }
success:function(data){
window.location.href("www.page2.html");
});
})
对于您的第一部分:
尝试放入jQuery ajax调用的错误函数。有时,当结果的返回类型与ajax调用的预期数据类型不匹配时,结果会作为错误响应出现。
error: function (data, status, e) {
}
对于您的第二部分:
在处理程序中附加按钮的点击事件,并使用window.location.search读取当前URL查询字符串,然后使用重定向
window.location = newURL + "extra query params";
// Assign handlers immediately after making the request,
// and remember the jqXHR object for this request
var jqxhr = $.ajax( "example.php" )
.done(function(data, textStatus, jqXHR) {
alert( "success" );
})
.fail(function(jqXHR, textStatus, errorThrown) {
alert( "error" );
})
.always(function(data|jqXHR, textStatus, jqXHR|errorThrown) {
alert( "complete" );
});
如果从未调用过.done()
回调,请尝试在.fail()
或.complete()
回调函数中设置调试器或警报。检查ajax调用过程中是否有错误,以及调用是否有完整的语句。此处提供更多信息:http://api.jquery.com/jquery.ajax/