2011-08-05 28 views
2

我有一個Javascript數組,我想傳遞給PHP。我的數組看起來像這樣。從Javascript發佈數組到PHP

Array[0] 
    "empNo" : "1347" 
    "empName" : "John Doe" 

我建立從這個JavaScript數組:

$('input[type=text]').each(function() 
{ 
      if ($(this).attr("value").length>0) 
      { 
        param[$(this).attr("id")]=$(this).attr("value"); 
      }    
}); 

然後我通過數組在PHP中使用

$.post("example.php",param) 

然後,當我嘗試使用後像互動到PHP這個:

$emp=$_POST['empNo']; 
$name=$_POST['empName']; 
echo ($_GET[0]);//this is for testing 

It thro有一個錯誤說,The Indexes of empNo and empName are not Defined。它也說0 is an undefined offset
感謝您的幫助

+1

你的問題是,無論是在Javascript或PHP,你的第一步應該是找出哪一個。使用Firebug net選項卡確定POST是否正確,然後返回或轉發。 – Malvolio

回答

5

而不是通過循環和手動構建您的數據傳遞只是做整個形式。

var data = $('form').serialize(); 

$.post("example.php", data); 

然後你應該有你的PHP腳本訪問。

確保您使用的<input name="exampleName" />屬性,然後嘗試訪問他們這樣......

$value = $_POST['exampleName']; 

,而現在,它看起來像你想使用id代替name

+0

我曾嘗試過。生病嘗試一遍。 – chris

+2

是的,我切換到序列化,它現在工作。感謝您切換到名稱值提示。它正在工作。謝謝!! :-) – chris

+1

+1爲正確的答案。 – Nemanja

1

我的第一個猜測是$ _POST有一個數組,其成員是你發送的值。

所以,我覺得值是$ _ POST [1],$ _ POST [2],等等

嘗試的print_r($ _ POST),看看你的變量去。

迴應您的評論:

我就收拾東西了一下,只是一個建議 - 尤其是ATTR(「值」)的一部分。

$('input[type=text]').each(function() { 
    if ($(this).val()) { 
     param[$(this).attr('id')] = $(this).val(); 
    }    
}); 
+0

當我做一個print_r($ _ POST)我得到的是數組() – chris

+1

這意味着你的帖子變量沒有被設置。我將按照上面的建議使用序列化,或者使用字符串方法「param1 = value&param2 = value2」等 – Alex

0

試試這個

var param = $('form').serialize(); 

$.post("example.php", param); 
+1

請注意,除非您已正確設置輸入的名稱,否則它將不起作用。使用名稱而不是ID。 –

+0

這是解決方案。謝謝 – chris