我尝试使用jquery通过ajax传回数组并返回,但我的代码运行不正常。 我一直在改变它,但它不起作用。 请告知该怎么做。 我认为我的jquery代码没问题,但PHP代码没有重播。 THX。
html代码。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255">
<script type="text/javascript" src="http://ajax.googleapis.com/
ajax/libs/jquery/1.5/jquery.min.js"></script>
<script type="text/javascript" >
$(document).ready(function(){
var allVals = {
'a': '1',
'b': '2',
'c': '3'
};
//$.each(allVals, function(key, value) {
//alert(key + ': ' + value);
// });
});
$.ajax({
type: "POST",
dataType: 'html',
url: "test4.php",
data: 'allVals=' + allVals,
cache: false,
success: function(data)
{
alert(data);
$('#test').html(data);
}
});
</script>
<title>Insert title here</title>
</head>
<body>
<div id="test">##</div>
</body>
</html>
php code test4.php
<?php
$allVals = $_POST['allVals'];
if ($allVals != ""){
foreach ($allVals as $key => $value) {
echo ($key.' '.$value."<br />");
} }
?>
答案 0 :(得分:3)
你也可以像这样从jQuery向PHP发送一个数组。在您的示例中,您发送了一个对象:
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
header('Content-Type: text/html');
print_r($_POST['allVals']);
/*
Array ( [0] => 1 [1] => 2 [2] => 3 )
*/
die;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
$(function() {
var myJavascriptArray = new Array('1', '2', '3');
//or var myJavascriptArray=["1","2","3"];
$.ajax({
type: "POST",
dataType: 'html',
url: "test.php",
data: {'allVals[]=' : myJavascriptArray},
cache: false,
success: function(data){
$('#test').html(data);
}
});
});
</script>
</head>
<body>
<div id="test"></div>
</body>
</html>
答案 1 :(得分:1)
你正在$(文件).ready(...-范围之外)进行$ .ajax调用。将其移入内部!
我会做这部分
data: 'allVals=' + allVals
像这样:
data: allVals
如果您想像在php中那样接收它,请将其更改为:
data: {"allVals": allVals}
希望我的语法正确..;)
答案 2 :(得分:0)
data: 'allVals=' + allVals,
这是罪魁祸首,发送的内容是allvals[object Object]
答案 3 :(得分:0)
如果你需要一个php数组,我建议你这样做:
data: {allVals : allVals}
$_POST['allVals']
将包含一个数组。
否则,如果您只需要单个参数,则必须执行以下操作:
var stringToSend = sep = "";
$.each(allVals, function(key, value) {
stringToSend += sep+key+"="+value;
sep = "&";
});
$.ajax({
type: "POST",
dataType: 'html',
url: "test4.php",
data: stringToSend,
...
答案 4 :(得分:0)
您最好使用jQuery $.POST方法:
var javascriptArray = new Array('a', 'b', 'c');
$.post('url_to_test4.php', {'allVals[]': javascriptArray }, function(data){
// perform some action with the response data.
});
这将向PHP文件发送一个名为allVals
的数组,该数组将包含javascriptArray
的内容。