我有以下代码使用ajax将Javascript数组传递给PHP:
HTML中的:
echo "<input type=\"hidden\" id= \"que_id\" name= \"que_id[]\" value=".$questions['que_id'].">";
这是一个循环。
在Javascript中:
var que_id_array = new Array();
$('input[name="que_id[]"]').each(function(){
que_id_array.push($(this).val());
});
AJAX致电:
$.ajax({
type:"POST",
url: 'questionmastermodify.php',
data: { que_id:que_id_array},
success: function(data) {
$('.my_update_panel').html(data);
$('#overlay').fadeOut();
}
});
PHP中的:
$que_id = $_REQUEST['que_id'];
echo count($que_id);
计数显示1而不是数组的大小,而在Javascript中,控制台显示:
console.log(que_id_array);
输出:
["151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "200"]
我被卡住,因为我在PHP中需要这个数组但是无法将这个数组从JS传递给PHP。
提前致谢....
Sandy505
答案 0 :(得分:2)
我用你的代码做了一个快速测试......并且做了一些改动,它对我来说很有用
在创建loop
字段...
<input>
而且...... loop
ID
中<input>
class
......这根本不好!改变它为<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
$('#theForm').submit(function(event) {
event.preventDefault();
createTheArray();
});
});
function createTheArray(){
// Create the Array
var que_id_array = new Array();
$('input[name="que_id[]"]').each(function(){
que_id_array.push($(this).val());
});
console.log(que_id_array); // output ["151", "152", "153"]
sendTheForm(que_id_array); // do the ajax call
}
function sendTheForm(que_id_array){
// AJAX Call
$.ajax({
type:"POST",
url: 'questionmastermodify.php',
data: { que_id:que_id_array},
success: function(data) {
$('.my_update_panel').html(data);
}
});
}
</script>
</head>
<body>
<form id="theForm">
<?php
// your original Array
$arrayName = array(
array('que_id' => '151'),
array('que_id' => '152'),
array('que_id' => '153')
);
foreach ($arrayName as $key => $questions) {
echo "<input type='text' class='que_id' name='que_id[]' value='{$questions['que_id']}'>";
}
?>
<input type="submit" value="send" />
</form>
<div class="my_update_panel">result will be loaded here...</div>
</body>
</html>
例如......
举个例子,这就是我尝试过的:
questionmastermodify.php
<?PHP
$que_id = $_REQUEST['que_id'];
echo '<pre>';
print_r($que_id);
echo '</pre>';
?>
PHP文件form submit
在<pre>Array
(
[0] => 151
[1] => 152
[2] => 153
)
</pre>
之后...... HTML将打印出来:
console.log();
在["151", "152", "153"]
{{1}}
试一试,祝你好运!
答案 1 :(得分:0)
您可以将数组编码为JSON:
data: { que_id: JSON.stringify(que_id_array)},
在PHP中,解码它:
$que_id = json_decode($_REQUEST['que_id']);
echo count($que_id);
答案 2 :(得分:0)
问题已解决:
罪魁祸首是我正在使用的jquery的版本。我使用的是jQuery JavaScript Library v1.3.2 - 导致了这个问题。
使用最新的:jquery-1.9.0.min.js解决问题。
我接受#gmo提供的答案,因为它让我接近解决问题的方法,以及关于不在循环中使用id属性的有用提示......
谢谢大家......