0

有人可以帮助我如何从 PHP 传递一组值并使用 AJAX 检索它。我发现只是从 PHP 传递一个值。当我尝试传递数组的值时,我不知道如何在 AJAX 端接收它

这是我的 PHP 代码:

$success[];
$timeout[];
$fail[];

while($row1 = mysql_fetch_array($masterresult))
{
    $success[]=$row1[1];
    $timeout[]=$row1[2];
    $fail[]=$row1[3]; 
}

echo json_encode(array("a"=>$success,"b"=>$timeout,"c"=>$fail));

下面是通过 AJAX 调用:

var channel;
 function overall(){
    $(".one").show();
    $(".two").hide();
    $(".three").hide();
    $(".four").hide();
    window['channel']="overall";
     $.ajax({
             type:"GET",
             url:"dash2.php",
             data:{channel:channel},
             dataType:'json',
             success:function(data){
                    console.log(data.a);
                    console.log(data.b);
                    console.log(data.c);
                    }
            });
    }

我应该如何将这些 php 数组值传递给这个 ajax 调用?有人可以帮我写代码吗

4

5 回答 5

2

您要做的是将其编码为 JSON

$yourArray = array('asdf', 'qwer', 'zxcv');
echo 'var yourJavaScriptArray = ' . json_encode($yourArray) . ';';

这使得您的所有任意数据也可以在 JavaScript 中安全使用。

如果您只使用 AJAX 执行此操作,则不需要该var部分。直接输出就好了json_encode()

于 2013-03-27T16:47:19.260 回答
2

例如,无论是数组中的一个值还是多个值,您都应该始终使用:

json_encode($your_php_var)
于 2013-03-27T16:47:31.007 回答
0
  1. json_encode你在 PHP 端的数组。
  2. 在 JavaScript 中使用该 JSON 对象无需任何额外努力,它是 JavaScript 的一部分。
  3. 当您将其发送回 PHP 时,只需json_decode使用 PHP 即可。

参考:PHP手册

于 2013-03-27T16:48:38.147 回答
0

为此,您可以将 JSON 与 jQuery 结合使用。

<?php

    $myArray = array('a', 'b');
    echo json_encode($myArray);

?>

阿贾克斯

$.get('http://localhost/index.php',
    function(data) {
        var response = jQuery.parseJSON(data);
        console.log(response);
    }
);

在您的代码中:

 var channel;
 function overall(){
    $(".one").show();
    $(".two").hide();
    $(".three").hide();
    $(".four").hide();
    window['channel']="overall";
    $.ajax({
             type:"GET",
             url:"dash2.php",
             data:{channel:channel},
             dataType:'json',
             success:function(data){
                    console.log(data["a"]);
                    console.log(data["b"]);
                    console.log(data["c"]);
            }
    });
 }
于 2013-03-27T16:55:59.897 回答
0

希望这个例子对你有所帮助。想象一下,如果您在 html 表单上有一些输入数据并且需要通过 AJAX 发送它们,在服务器端对它们做一些事情,然后在客户端接收结果并用它做一些事情。

 <form id="my_form" method="post" action="<?=$ServerSideUrl?>">
   <input type="text" name="field_1" value="">
   <input type="text" name="field_2" value="">
   <input type="text" name="field_3" value="">
 </form>

这是你的 AJAX 脚本,我在这个例子中使用了 JQuery

$('#my_form').ajaxSubmit({
        dataType: 'html',
        error: function() {
          alert('some error text');
        },
        complete: function(data) {
          //data this is the result object which returned from server side
          //for example you shpold alert the sum of thouse 3 field
          alert(data.sum);
        }
});

这是您的服务器端代码

 <? 
   $data = array();
   $data["sum"] = $_POST["field_1"] + $_POST["field_2"] + $_POST["field_3"];
   echo my_json_encode($data);
   return true;
 ?>

因此,当您的 AJAX 完成时,它会提醒您表单上三个字段的总和,

于 2013-03-27T16:57:40.230 回答