2015-04-04 80 views
1

我一直試圖將數組和表單數據一起發佈,但看起來像我得到的JavaScript錯誤。當我試圖發佈只有數組數據而不添加表單數據時,它工作正常。

我有一個下拉選擇框和幾個CheckBoxes。我想將SelectBox數據和CheckBox數據一起發佈,因此我將CheckBox數據保存到數組中,因爲它是一個多選Select CheckBox。通過jQuery Ajax發佈數組和表單數據時發生的問題

在下面的代碼,我需要這方面的

data: datasel+"&id="+$("#member_id").val(), //Error in this line only. To be Fixed!! 

這裏解決的問題是完整的代碼

<script> 
$(document).ready(function(){ 
    $("#err").css('display', 'none', 'important'); 
    $("#submit_issueBook").click(function(){ 
     //Creating Array and adding data 
     var datasel = { 'selector[]' : []}; 
     $(":checked").each(function() { 
      datasel['selector[]'].push($(this).val()); 
     }); 

     $.ajax({ 
      type: "POST", 
      url: "includes/issue_book.php", 
      //data: "submit_addMember="+$("#submit_addMember").val(), <-- Default format for sending post data 
      data: datasel+"&id="+$("#member_id").val(), 
       if($.trim(html)=='true'){ 
        $("#err").addClass("alert alert-success err-inline"); 
        $("#err").html("<strong>Member details updated Successfully</strong>"); 
        window.location="<?php basename($_SERVER['PHP_SELF']); ?>"; 
       } 
       else{ 
        $("#err").addClass("alert alert-danger err-inline"); 
        $("#err").html("<img src='images/caution-icon.png' />"+$.trim(html)); 
       } 
      }, 
      beforeSend:function() 
      { 
       $("#err").css('display', '-webkit-inline-box', 'important'); 
       $("#err").addClass("err-inline"); 
       $("#err").html("<img src='images/loading.gif' /> Loading...") 
      } 
     }); 
     return false; 
    }); 
}); 
</script> 

PHP代碼來捕獲這些數據

if(isset($_POST['selector'])) 
{ $id=$_POST['id']; 
    $data=$_POST['selector']; 
    for ($i=0; $i < count($data); $i++) 
    { 
     //Some SQL query 
    } 
} 

任何幫助將不勝感激。 謝謝:)

回答

1

你正在混合json和獲取數據中的字符串。由於您擁有數據集對象,只需將ID鍵和值添加到它。第一丟棄這些方括號中,它僅需要在HTML形式爲名稱:

var datasel = { 'selector' : []}; 

然後在循環:

datasel['selector'].push($(this).val()); 

循環後添加ID的鍵/值對來datasel對象:

datasel.id = $("#member_id").val(); 

然後在阿賈克斯就足以讓這個JSON:

data: datasel, 
+0

感謝兄弟工作。但是有一個問題我檢查了POST數據,看起來它在這裏發佈了一個額外的選擇 選擇器「%」5B「%」5D = 2&選擇器「%」5B「%」5D = 1&選擇器「%」5B「%」5D = 2&id = 2 第一個選擇符= 2的人會自動添加不知道如何。我甚至檢查過這個html,沒有這個問題。那麼爲什麼它發佈兩次選擇器= 2 – 2015-04-04 19:26:31

+0

我不知道,看起來像你有兩個「2」s檢查。仔細檢查你的表單輸入設置。 – 2015-04-04 19:41:30

+1

謝謝曼我已經找到了問題替換$(「:checked」)$(「#selection:checked」) – 2015-04-04 20:02:11

0

首先,爲什麼要將DOM操作代碼放入ajax調用設置中?試試這個代碼:

$.ajax({ 
    type: "POST", 
    url: "includes/issue_book.php", 
    //data: "submit_addMember="+$("#submit_addMember").val(), <-- Default format for sending post data 
    data: datasel+"&id="+$("#member_id").val(), 
    beforeSend:function() 
    { 
     $("#err").css('display', '-webkit-inline-box', 'important'); 
     $("#err").addClass("err-inline"); 
     $("#err").html("<img src='images/loading.gif' /> Loading...") 
    } 
}); 

我在這裏做什麼是刪除了此代碼我之前提到的(所以你應該把它放在你需要),然後把beforeSend它所屬:)

阿賈克斯裏面設置跳它會幫助你。