数组通过ajax,但在php中作为字符串接收
以下是我的jquery代码:数组通过ajax,但在php中作为字符串接收,php,jquery,Php,Jquery,以下是我的jquery代码: e_val = []; e_val = ['enroll','reject']; $.ajax({ url: 'myurl.php', type: 'post', dataType: 'text', data: { reason: 'insert', ev
e_val = [];
e_val = ['enroll','reject'];
$.ajax({
url: 'myurl.php',
type: 'post',
dataType: 'text',
data: {
reason: 'insert',
eval: e_val
},
success: function (suc) {
row.remove();
alert(suc);
}
});
myurl.php:
$reason = $_POST['reason'];
$eval = array();
if($reason == "insert"){
$eval = $_POST['eval'];
echo $eval[1];
}
我得到的警告是:
n
这是因为n在e_val[0]中的索引值为1。
我能知道为什么我的数组在PHP页面中被转换成字符串,而我不能访问数组元素吗?
提前感谢。您可以将inpode()与inpode()函数一起使用,inpode()函数从数组元素返回字符串
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<script>
var e_val = [];
var e_val = ['enroll','reject'];
console.log(e_val);
$.ajax({
url: 'test2.php',
type: 'post',
dataType: 'text',
data: {
reason: 'insert',
eval: e_val
},
success: function (suc) {
alert(suc);
}
});
// alert("dddd");
</script>
</body>
</html>
var e_val=[];
var e_val=['enroll','reject'];
控制台日志(e_val);
$.ajax({
url:'test2.php',
键入:“post”,
数据类型:“文本”,
数据:{
原因:“插入”,
评估:e_val
},
成功:功能(suc){
警报(suc);
}
});
//警报(“dddd”);
test2.php
<?php
$reason = $_POST['reason'];
$eval = array();
if($reason == "insert"){
$eval = $_POST['eval'];
echo implode(', ', $eval );
// echo "Dddd";
}
// echo "Dddd";
?>
将数据类型用作json而不是文本。您可能还需要添加标题:{'Content-Type':'application/json'}。eval也是JAVASCRIPT中的一个关键字,请避免使用它。 大概
$.ajax({
url: 'myurl.php',
type: 'post',
dataType: 'json',
headers: { 'Content-Type': 'application/json' },
data: {
reason: 'insert',
e_val: e_val
},
success: function (suc) {
row.remove();
alert(suc);
}
});
这是因为请求中发送的每个值都作为字符串发送。您需要在PHP中手动将其从字符串转换为数组。我该怎么做呢?假设这些值是URLCoded格式的,那么您应该使用JSON作为数据类型并在中解析JSONphp@RoryMcCrossan我试过了,但不起作用我没有得到任何结果