Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数组通过ajax,但在php中作为字符串接收_Php_Jquery - Fatal编程技术网

数组通过ajax,但在php中作为字符串接收

数组通过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

以下是我的jquery代码:

 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我试过了,但不起作用我没有得到任何结果