[英]AJAX post function not working properly after first call to the function
我對jquery和AJAX完全陌生,在嘗試了5到6個小時並搜索解決方案后,我正在尋求幫助。
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$(".submit").live('click',(function() {
var data = $("this").serialize();
var arr = $("input[name='productinfo[]']:checked").map(function() {
return this.value;
}).get();
if(arr=='')
{
$('.success').hide();
$('.error').show();
}
else
{
$.ajax({
data: $.post('install_product.php', {productvars: arr}),
type: "POST",
success: function(){
$(".productinfo").attr('checked', false);
$('.success').show();
$('.error').hide();
}
});
}
return false;
}));
});
</script>
HTML + PHP代碼是
$json = file_get_contents(feed address);
$products = json_decode($json);
foreach(products as product){
// define various $productvars as a string
<input type="checkbox" class="productvars" name="productinfo[]" value="<?php echo $productvars; ?>" />
}
<input type="submit" class="submit" value="Install Product" />
<span class="error" style="display:none"><font color="red">No product selected.</font></span>
<span class="success" style="display:none"><font color="green">product successfully added to database.</font></span>
當我從提要中獲取產品信息時,我不想刷新頁面,這就是為什么我使用AJAX發布方法。 使用上面的代碼“ install_product.php”頁面可以正確處理字符串並正確地執行其工作。
我面臨的問題是,當我第一次檢查復選框並安裝產品時,它絕對可以正常工作,但是在首次發布“有時它可以工作,有時卻無法工作”之后。 由於從提要中提取了新列表,因此之后的每個第一篇文章都是完美的,因此我需要一次又一次單擊“安裝”按鈕。
我在不同的瀏覽器上測試了代碼,但是存在相同的問題。 可能是什么問題? (我正在實時主機而不是本地主機上測試代碼)
不建議使用$.live
,請考慮改用$.on()
。
執行一次后哪個功能沒有執行? $.live
?
另外,它應該是:
var data = $(this).serialize();
不
var data = $("this").serialize();
在您的示例中,您正在尋找一個名為“ this”的顯式標簽,而不是范圍。
更新
$(function () {
$(".submit")
.live('click', function(event) {
var data = $(this).serialize();
var arr = $("input[name='productinfo[]']:checked")
.map(function () {
return this.value;
})
.get();
if (arr == '') {
$('.success')
.hide();
$('.error')
.show();
} else {
$.ajax({
data: $.post('install_product.php', {
productvars: arr
}),
type: "POST",
success: function () {
$(".productinfo")
.attr('checked', false);
$('.success')
.show();
$('.error')
.hide();
}
});
}
event.preventDefault();
});
});
是否有可能丟失了arr的值並顯示錯誤,或者是正在撥打電話但不返回電話還是根本沒有到達電話? 做一個console.log來處理調試並在firefox / chrome中檢查一下,看看問題出在哪里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.