Javascript重定向Ajax成功

时间:2015-10-08 12:33:45

标签: javascript php jquery ajax

我有一个测验类型的应用程序。每个问题都有两个答案,值为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++;
    }
}

我想解决一些问题。首先,在重定向之前,一些数据(答案和网址)会发布到PHP,以便我可以处理它。我传递的一件事是当前的窗口网址。我这样做的原因是因为 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);

我想解决的第二件事是重定向网址(page2.html)。在这个页面中,我有一个按钮。这个按钮有一个标准的链接,然后我需要从初始URL给它一些参数。 因此,此页面按钮可能类似于

  

www.externallink.com?a=1&c=2

如何将原始网址params放入重定向网址的按钮?

由于

3 个答案:

答案 0 :(得分:1)

使用以下功能:

 $.ajax({
        method: "POST",
        url: "handleData.php",
        dataType: "json",
        data: { answers: ansArray, page: window.location.href }
        success:function(data){
            window.location.href("www.page2.html");
        });
    })

答案 1 :(得分:0)

第1部分:

尝试使用jQuery ajax调用的错误函数。有时当返回类型的结果与ajax调用的预期数据类型不匹配时,结果会出现错误响应。

set

第二部分:

在处理程序中附加按钮的click事件,并使用 window.location.search 读取当前的URL查询字符串,然后使用

重定向
error: function (data, status, e) {

        }

答案 2 :(得分:0)

// 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/