Jquery Ajax调用需要暂停吗?

时间:2012-02-07 10:56:20

标签: jquery ajax

我在调用ajax命令时遇到问题。所以问题是在ajax调用了php页面之后(以及在数据库中插入数据之后)... ajax调用的成功应该将页面重定向到某个地方别的....这是代码:

$.ajax({
     type: "POST",
     dataType: "json",
     url: "insertInfo.php",
     timeout: 3000,
     data: "name=" + myName + "&email=" + myEmail + 
               "&birthdate=" + myBirthdate + "&nickname=" + 
               myNickName + "&shirtcolor=" + myShirtColor + "&slogancolor=" +
               mySloganColor + "&slogantext=" + mySloganText,
         success: function(data)
         {
          if(data.operation=="completed")
          {
            window.location.href = "thank_you.php";
          }         
         }
});

现在,当我提出时,奇怪的事情发生了:

alert('test')

在调用ajax之前!..如果我放了它,当然会出现消息框,ajax工作正常,连接到数据库并重定向页面。

如果我拿走警报框,没有任何反应,数据库不会被修改,也不会发生重定向。

我不明白问题出在哪里......我是否必须暂停ajax电话?

为了每一个理智的解释,你都会嗤之以鼻。)


if($('。info-user-form')。valid())                 {

                var myShirtColor = $('input[name="shirt"]').val();
                var mySloganText = $('input[name="shirtText"]').val();
                var mySloganColor = $('input[name="slogan"]').val();

                var myName = $('input#name').val();
                var myEmail = $('input#email').val();
                var myBirthdate = $('input#birthdate').val();
                var myNickName = $('input#nickname').val();



                $.ajax({
                    type: "POST",
                    dataType: "json",
                    url: "insertInfo.php",
                    timeout: 3000,
                    data: "name=" + myName + "&email=" + myEmail + "&birthdate=" + myBirthdate + "&nickname=" + myNickName + "&shirtcolor=" + myShirtColor + "&slogancolor=" + mySloganColor + "&slogantext=" + mySloganText,
                    success: function(data){                                                        
                        if(data.operation=="completed")
                        {                               
                            window.location.href = "thank_you.php";
                        }

                    }
                });
            }

好的,所以这是在jquery的document.ready中... 所有这一切...只有一个案例中ajax调用之前警报箱的存在... 谢谢大家的回复,我会试着看看bugzilla,即使我不知道会发生什么......


还用萤火虫做了测试......

因此,在运行firebug时,jax会将数据保存在db中并重定向页面。 Witgh firebug close,只保存数据,无需重定向

在Chrome中甚至没有保存数据......

4 个答案:

答案 0 :(得分:1)

var queryString = "name=" + myName + "&email=" + myEmail + 
           "&birthdate=" + myBirthdate + "&nickname=" + 
           myNickName + "&shirtcolor=" + myShirtColor + "&slogancolor=" +
           mySloganColor + "&slogantext=" + mySloganText"";

data : queryString

尝试添加此内容。

contentType: "application/json; charset=utf-8",
type:'GET',

使用$_GET

获取insertInfo.php上的值

对于重定向,请在成功函数中添加此代码

var url = "thank_you.php";
$(location).attr('href',url);

它的工作

答案 1 :(得分:0)

检查错误控制台和网络日志,看看发生了什么。另一个可能的原因是你在初始化之前尝试从DOM中获取输入值等。如果是这种情况,您可以将代码放在$(document).ready事件中。希望这有帮助

答案 2 :(得分:0)

所以在搜索和各种测试之后我发现如果我把选项

async:false

在ajax调用中,

它完美运行(我将在firefox中测试,在chrome中完美运行..)..

任何人都明白为什么?...很高兴知道....谢谢

答案 3 :(得分:0)

您似乎正在验证表单。确保表单提交的监听器返回false