2013-03-13 34 views
1

我將Jquery的數據傳遞給了一個php文件,除了$ _REQUEST數組包含一個額外的項目將我拋棄之外,它們似乎都運行良好。

這是以下形式:

<form id = "filter"> 
<input class="hook1" type="checkbox" value="115" name="0"> bla blah <br > 
<input class="hook1" type="checkbox" value="116" name="1"> blah blah  <br > 
<input class="hook1" type="checkbox" value="107" name="2"> stil blah blah 
</form> 

這是Jquery的:

<script> 
$(document).ready(function(){ 
$("#filter").change(function() 
{ 
var str = $("#filter").serialize(); 

alert(str); 

$.ajax({ 
     url: "filter_trim.php", 
     type: "POST", 
    dataType:"json", 
     data: str, 
     success: function(data){ 
      // do something with returned data 
     } 
}); 
}); 
}); 
</script> 

甲的var_dump使用螢火蟲正在打印這個用於箱子2檢查盒,使用控制檯從($ _ REQUEST)螢火蟲。的var_dump($ _ REQUEST)=陣列(3){ [1] => 串(3) 「116」 [2] => 串(3) 「107」 [ 「SQLiteManager_currentLangue」] => 串( 1)「2」

我不知道最後一項是從哪裏來的。可能是它的正常,我現在纔看到它,因爲這是我第一次傳遞數據。

php文件filter_trim.php像這樣啓動。正如你所看到的,我必須使用array_pop()來擺脫$ _REQUEST數組中不希望的最後一項。

<?php 
$connect = mysql_connect("localhost", "root", "root"); 
mysql_select_db("cars"); 
$trimids = array(); 
var_dump($_REQUEST); 

array_pop($_REQUEST); 
$trimids = $_REQUEST; 
$trimids = implode(",", $trimids); 

我很欣賞任何輸入。

感謝

回答

1

你真的應該考慮到你的複選框,這樣,當你序列化表單,你會得到一個關聯數組,這將是比較容易的工作,像這樣指定名稱:

<form id = "filter"> 
<input name="hooks[0]" class="hooks0" type="checkbox" value="115"> bla blah <br > 
<input name="hooks[1]" class="hooks1" type="checkbox" value="116"> blah blah  <br > 
<input name="hooks[2]" class="hooks2" type="checkbox" value="107"> stil blah blah 
</form> 

然後,在你的PHP:

$connect = mysql_connect("localhost", "root", "root"); 
mysql_select_db("cars"); 

$trimids = is_array($_REQUEST['hooks']) ? $_REQUEST['hooks'] : array(); 
+0

謝謝,埃文。這個名字已經存在,儘管每個輸入都有自己的名字。我會嘗試你的方法。 – BernardA 2013-03-13 09:57:34

+0

埃文。您的解決方案似乎不起作用。即使Firebug在檢查時顯示了所有3個值,$ _REQUEST只保留最後一次檢查的值。這裏是$ _REQUEST:array(2)的var_dump(){ [「hook1」] => string(3)「107」 [「SQLiteManager_currentLangue」] => string(1)「2」 – BernardA 2013-03-13 10:09:20

+0

複選框工作伯納德,如果他們都是相同的名稱,他們將只有一個值(被檢查的值)。你可以嘗試讓它們具有不同的名字,或許(hook1,hook2等)。 – Eva 2013-03-13 19:24:44