2017-03-21 42 views
1

郵政阿賈克斯數據我已經由PHP生成的一種形式:帶班,而不是ID

<form id="change_status_form" name="change_status_form"> 
<input name="booking_int" type="hidden" value="'.$upcoming_bookings[$x]['booking_int'].'"> <select name="booking_status" onchange="change_status();"> 
    <option selected value="0"> 
     Not Yet Arrived 
    </option> 
    <option value="1"> 
     Seated 
    </option> 
    <option value="4"> 
     Cancelled 
    </option> 
    <option value="5"> 
     No Show 
    </option> 
</select> 

這將提交數據的onchange阿賈克斯:

function change_status() { 
    $.post('dash_includes/dash_change_booking_status.php', { 
     booking_status: change_status_form.booking_status.value, 
     booking_int: change_status_form.booking_int.value 
    }, function(output) { 
     $('#all_bookings_div').load('dash_includes/dash_display_all_bookings.php').fadeIn("slow"); 
    }); 
} 

一旦提交它會發布將數據發送到dash_change_booking_status.php。這很有用,但我需要多次重複表單,而不必知道多少次。當我這樣做時,Ajax將只在第一個工作。

我相信這是關於表單的id,我應該改爲class。任何人都可以告訴我如何a)改變表格的類,b)如何發佈數據?

在旁註中,如果我添加到表單底部,它會停止發佈它!

+0

將'id =「change_status_form」'更改爲'class =「change_status_form」'並在jquery中獲取相應的表單。 – CodeMonkey

+0

@Inuka通過「相應的表單」,你能舉個例子嗎?我認爲我掙扎的主要原因是如果數據沒有隨表單ID一起發送,那麼該如何發佈數據。 – user2803146

回答

1

根據你的問題,你似乎是動態生成內容,它只能第一次工作。下面的代碼應該做的伎倆,而不涉及類或id。 您可以替換<select name="booking_status" onchange="change_status();"><select name="booking_status" class = 'booking_status'>

$(document).on("change", "select.booking_status", function(){ 
    var $form = $(this).parents('form:first'); 
    $.post('dash_includes/dash_change_booking_status.php', { 
      booking_status: $form.find("select[name='booking_status']").val(), 
      booking_int: $form.find("input[name='booking_int']").val() 
     }, function(output) { 
      $('#all_bookings_div').load('dash_includes/dash_display_all_bookings.php').fadeIn("slow"); 
     }); 
    }); 
+0

我已經將腳本更改爲您的腳本,但它只是讓我發佈第一個腳本,這是做同樣的事情。 – user2803146

+0

嘗試新的更新的答案 – Rahi

+0

我收到此錯誤:「未捕獲的TypeError:無法讀取屬性'值'...」。我是否需要更改'change_status_form'部分? – user2803146

0

你可以只改變$(「#booking_status」)到$(」。booking_status'),但是你將有多個值查詢,你需要用每個在獨特包裝類或ID

<form id="form1"> 
    <input type="text" class="booking_status"> 
</form> 

,然後將各個形式通過獲取數據:

$('#form1 .booking_status').val() 

You can pass the id of the form to your onchange function.

+0

我不知道它會動態生成多少個表單。 – user2803146

+0

您可以動態設置表單ID

」> –