数组通过ajax但在php中以字符串形式接收

时间:2017-09-07 13:10:49

标签: php jquery

以下是我的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页面中转换为字符串而且我无法访问数组元素吗? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

你可以使用implode()与implode()函数返回一个数组元素的字符串。

<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>

test2.php

 <?php
    $reason = $_POST['reason'];
    $eval = array();
    if($reason == "insert"){
         $eval = $_POST['eval'];
         echo implode(', ', $eval );
       //  echo "Dddd";
    }
      // echo "Dddd";
?>  

答案 1 :(得分:0)

使用dataType作为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);
                    }
           });