Javascript 如何使用调用PHP脚本的AJAX接收数组?
所以基本上我所做的是使用AJAX自动填充文本框,从调用C函数的PHP脚本中获取信息 这是我在理论上发现的:(假设只收到一个值) 现在,如果这能奏效,我相信它会的。如果我收到一个值数组,那么函数内部的输入不能是response,对吗?那么我需要做些什么来改变它,使之成为一个数组呢 为了清楚起见,我的PHP脚本正在使用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
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);
});