Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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
Javascript 如何使用调用PHP脚本的AJAX接收数组?_Javascript_Php_Jquery_Ajax_Autocomplete - Fatal编程技术网

Javascript 如何使用调用PHP脚本的AJAX接收数组?

Javascript 如何使用调用PHP脚本的AJAX接收数组?,javascript,php,jquery,ajax,autocomplete,Javascript,Php,Jquery,Ajax,Autocomplete,所以基本上我所做的是使用AJAX自动填充文本框,从调用C函数的PHP脚本中获取信息 这是我在理论上发现的:(假设只收到一个值) 现在,如果这能奏效,我相信它会的。如果我收到一个值数组,那么函数内部的输入不能是response,对吗?那么我需要做些什么来改变它,使之成为一个数组呢 为了清楚起见,我的PHP脚本正在使用echo输出其信息。我宁愿以更“标准”的方式输出,如V1=120、V2=120等。但PHP对我来说是新的,我目前正在研究。多谢各位 编辑: 只是为了让它更清楚 你喜欢这个工作吗 $(d

所以基本上我所做的是使用AJAX自动填充文本框,从调用C函数的PHP脚本中获取信息

这是我在理论上发现的:(假设只收到一个值)

现在,如果这能奏效,我相信它会的。如果我收到一个值数组,那么函数内部的输入不能是response,对吗?那么我需要做些什么来改变它,使之成为一个数组呢

为了清楚起见,我的PHP脚本正在使用
echo
输出其信息。我宁愿以更“标准”的方式输出,如V1=120、V2=120等。但PHP对我来说是新的,我目前正在研究。多谢各位

编辑: 只是为了让它更清楚

你喜欢这个工作吗

$(document).ready(function(){
    window.setInterval(function(){
        var ajaxurl = 'php/portserverclient.php',
        $.post(ajaxurl, NULL, function (response[]) {
            $('#v1').val(response[0]);
            $('#v2').val(response[1]);
            $('#v3').val(response[2]);
        });
    }, 5000);
});

根据OP更新,您可以尝试这样的操作,将数组的每个项映射到您可以执行的相应文本框

    $.post(ajaxurl, NULL, function (response) {
        for (var i = 0; i < response.length; i++) {
            $("#v" + (i + 1)).val(response[i]);
        }
    });
$.post(ajaxurl,NULL,函数(响应){
对于(变量i=0;i
这将把从JSON端点返回的数组的每个索引映射到相应的文本框

如果从端点返回的JSON是有效的JSON数组,那么响应变量应该已经是数组了

javascript和PHP之间最简单的通信方式(对我来说)是JSON。 因此,您的PHP脚本必须以这种格式生成答案

PHP代码

// At the top of your PHP script add this
// that will tell to your browser to read the response as JSON
header('Content-Type    : application/json', true); 
// Do your logic to generate a PHP array
echo json_encode($yourArray);
HTML代码

<div class="someClass"></div>

Javascript代码

var container = $('.someClass');
$.post(ajaxurl, NULL, function (response) {
    console.log(response); // for debuging
    for (let i = 0; i <= response.length; i++) {
        let myItem = response[i];
        container.append('<p>' + item + '</p>');
    }
});
var container=$('.someClass');
$.post(ajaxurl,NULL,函数(响应){
console.log(response);//用于调试

对于(让i=0;i将数组作为json发送:

echo json_encode(array($value1, $value2, $value3));
JS


由于您在PHP端执行
echo
,因此响应可以是字符串。
但是,如果该字符串的格式是有效的JSON,您就可以随心所欲地使用它

因此,在PHP方面,请确保json格式有效:

$array = [120,340,800];

echo json_encode($array);
然后在JS中…你收到一个字符串…你必须解析它使之成为一个数组

$(document).ready(function(){
  window.setInterval(function(){
      var ajaxurl = 'php/portserverclient.php',
      $.post(ajaxurl, NULL, function (response[]) {
          var responseArray = JSON.parse(response);
          $('#v1').val(responseArray[0]);
          $('#v2').val(responseArray[1]);
          $('#v3').val(responseArray[2]);
      });
  }, 5000);
});

如果您使用的是
echo
,则响应是一个
字符串
…您能为我指出正确的搜索方向以将响应转换为数组吗?当然……我已完成编辑我的答案…请尝试;)嘿!谢谢你的快速回复。我编辑了OP以使其更清晰一些,我有多个文本框。V1、V2、V3等我想归档。我想问我想实现什么的一个更清晰的方法是,我如何将
函数中的
响应
。post
函数转换为数组?请查看我的更新,如果你有棘手的问题
$array = [120,340,800];

echo json_encode($array);
$(document).ready(function(){
  window.setInterval(function(){
      var ajaxurl = 'php/portserverclient.php',
      $.post(ajaxurl, NULL, function (response[]) {
          var responseArray = JSON.parse(response);
          $('#v1').val(responseArray[0]);
          $('#v2').val(responseArray[1]);
          $('#v3').val(responseArray[2]);
      });
  }, 5000);
});