10

我有一个 jquery ajax 请求,例如;

$.ajax({
    type: 'POST',
    url: 'processor.php',
    data: 'data1=testdata1&data2=testdata2&data3=testdata3',
    cache: false,
    success: function(result) {
      if(result){
        alert(result);
      }else{
        alert("error");
      }
    }
});

处理程序processor.php设置为返回一个数组,如;

$array = array("a","b","c","d");
echo $array;

我想基于此在客户端执行操作。假设数组 [0] 是“b”,我想提醒“嗨”。同样,如果数组 [2] 是“x”,我想提醒“你好”,依此类推。如何过滤数组元素以获取它们的数据?

4

5 回答 5

24

您必须返回以 json 形式编码的数组,如下所示

$array = array("a","b","c","d");
echo json_encode($array);

然后你可以在javascript中访问它,将它转换回一个数组/对象,比如

var result = eval(retuned_value);

您还可以使用 for 循环浏览所有数组元素

for (var index in result){
    // you can show both index and value to know how the array is indexed in javascript (but it should be the same way it was in the php script)
    alert("index:" + index + "\n value" + result[index]);
}

在您的代码中,它应该类似于:

PHP代码:

$array = array("a","b","c","d");
echo json_encode( $array );

jQuery 脚本

$.ajax({
    type: 'POST',
    url: 'processor.php',
    data: 'data1=testdata1&data2=testdata2&data3=testdata3',
    cache: false,
    success: function(result) {
      if(result){
        resultObj = eval (result);
        alert( resultObj );
      }else{
        alert("error");
      }
    }
});
于 2013-03-09T13:42:38.660 回答
2

从 php http://php.net/manual/en/function.json-encode.php返回 JSON

并在 javascript 中从 json 字符串创建一个对象,您可以使用 getJSON 而不是 ajax http://api.jquery.com/jQuery.getJSON/

确保您的 php 设置正确的响应标头:

 header ("content-type: application/json; charset=utf-8");
于 2013-03-09T13:50:16.837 回答
2

我找到了将数组从 php 返回到 Ajax (jscript) 的最佳方法:

在 php 方面:echo json_encode($myArray); 在 javascript 方面(例如myAjax.responseTextreplyVal = JSON.parse(myAjax.responseText);

要将数组从 javascript 发送到 php,请使用匹配JSON.stringify()发送和 phpjson_decode()接收

于 2015-03-13T20:26:52.183 回答
1

在您的 PHP 代码中,将数组编码为 JSON 对象

echo json_encode($array);

然后您需要将 JSON 对象转换为与 Javascript/jQuery 兼容的对象。之后,您可以转换回数组

$.ajax({
      success: function(result) {

      jq_json_obj = $.parseJSON(result); //Convert the JSON object to jQuery-compatible

      if(typeof jq_json_obj == 'object'){ //Test if variable is a [JSON] object
        jq_obj = eval (jq_json_obj); 

        //Convert back to an array
        jq_array = [];
        for(elem in jq_obj){
            jq_array.push(jq_obj[elem]);
        }
        console.log(jq_array);
      }else{
        console.log("Error occurred!"); 
      }
    }
});
于 2014-05-15T02:56:58.823 回答
-1
$.ajax({  
    type: 'POST',  
    url: 'processor.php',//please return in json  
    dataType : 'json',//to get data in json   
    data: 'data1=testdata1&data2=testdata2&data3=testdata3',  
    cache: false,  
    success: function(result) {  
      if(result.array.length > 0){  
        for(var i=0;i<result.array.length;i++){  
            if(result.array.[i]== 'a'){  
               //do somthing..  
               //here, you can use switch case too...  
            }  
        }  
      }  
    }  
});
于 2016-07-12T03:51:46.087 回答