我突然得到了一个非常奇怪的“虫子”。到目前为止,这个脚本就像一个魅力。但突然之间,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'
});
});
答案 0 :(得分:1)
我的猜测是将alert()
置于允许{AJ}请求发送之前完全填充form_data
和brand_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超时构造会将您的代码放在执行队列的末尾。