jQuery.ajax的奇怪行为

时间:2012-01-10 10:56:08

标签: php jquery ajax

我突然得到了一个非常奇怪的“虫子”。到目前为止,这个脚本就像一个魅力。但突然之间,formData变量不会通过jQuery.ajax传递,就好像它不存在一样。

有趣的是,如果我触发显示数据的alert,那一切都有效。但是一旦我删除警报,php脚本就会告诉我formData索引丢失了。

我对导致此问题或如何解决问题的方法毫无头绪: - /

这适用于我的开发服务器,但不适用于生产服务器。

jQuery('#btn_saveForm').live('click', function() {
    var instance = 'update';
    var brand_id = jQuery('#itemID').val();

    // Get form data
    var form_data = jQuery("#data_form").serialize();

    // alert(form_data); //If I uncomment this, the script works...

    //Process form data
    jQuery.ajax({
        url: siteURL +"/wp-content/themes/my_theme/include/jquery.php",
        data: {
            instance : instance, 
            formData : form_data, 
            brandID : brand_id
        },
        success: (function(feedback) {
            showFeedback(feedback);
        }),
        dataType: 'json'
    });
});

3 个答案:

答案 0 :(得分:1)

我的猜测是将alert()置于允许{AJ}请求发送之前完全填充form_databrand_id变量。考虑到这一点,试试这个:

jQuery.ajax({
    url: siteURL +"/wp-content/themes/my_theme/include/jquery.php",
    data: {
        instance : instance, 
        formData : jQuery("#data_form").serialize(),
        brandID : jQuery('#itemID').val()
    },
    success: (function(feedback) {
        showFeedback(feedback);
    }),
    dataType: 'json'
});

或者,只是为了测试,您可以在AJAX调用上设置async: false以查看是否会产生影响。

答案 1 :(得分:0)

尝试重新启动浏览器/将浏览器更改为另一个,然后看看发生了什么

答案 2 :(得分:0)

如果你在这里有一些比赛(这很奇怪,因为js是单线程),以下内容可以帮助你:

setTimeout(function() { 
    jQuery.ajax({
        url: siteURL +"/wp-content/themes/my_theme/include/jquery.php",
        data: {
            instance : instance, 
            formData : form_data, 
            brandID : brand_id
        },
        success: (function(feedback) {
            showFeedback(feedback);
        }),
        dataType: 'json'
    })
}, 0);

0超时构造会将您的代码放在执行队列的末尾。