将 PHP 数组传递给外部 jQuery $.ajax
Posted
技术标签:
【中文标题】将 PHP 数组传递给外部 jQuery $.ajax【英文标题】:Pass PHP array to external jQuery $.ajax 【发布时间】:2015-08-07 10:03:28 【问题描述】:基本上我想要做的是获取一个包含 t.php 的数组,并使用 javascript 以 t.php 的响应来警告它。
问题是该文件中不存在该变量... 那么,如何将这个变量传递给 JS?
我试过'return':
return $sqlData = $q->query_array_assoc();
但不起作用。
这是我的 $.ajax 代码:
<script type="text/javascript">
$(document).ready(function()
$('#brand').change(function(e)
console.log(e);
$.ajax(
method: "GET",
url: "t.php",
data: type: 1, brand: this.value
)
.done(function(msg)
$('#debug').html(msg);
var pArray = <?php echo json_encode($sqlData);?>
for (var i = 0; i < pArray.length; i++)
alert(pArray[i]);
;
);
);
</script>
注意:我发送了
data: type: 1, brand: this.value
验证 .php 文件中的 switch 语句,但这没有问题。我从数据库中获取数据并获取变量$sqlData;
所以数组有数据,问题是用$.ajax
得到它
【问题讨论】:
不可能。 HTTP 对 php 结构一无所知,它只知道“字节”。这样一大块字节中的 php 数组将是文字“数组”。你需要序列化/编码你的数组。对于 JS,最简单的方法是json_encode()
。请注意,您在 JS 代码中的 php sn-p 是没有意义的。 PHP 在页面生成时执行 ONCE 并且永远不会再执行。
另外,你应该使用 'echo' 或 'print' 而不是 't.php' 中的 'return' 来为你的 js 返回一些结果 =)
好的,那么...假设您如何使用 mysql 查询进行嵌套选择?你知道怎么做吗?
【参考方案1】:
在你的 php 文件中,你需要回显而不是返回
echo json_encode($q->query_array_assoc());
在javascript代码中:
$.ajax(
method: "GET",
url: "t.php",
data: type: 1, brand: this.value ,
success: function(data)
$('#debug').html(data);
// if you want to use it as array
var json_data = JSON.parse(data);
);
【讨论】:
当我这样做时,Chrome 调试器会在第一行显示错误... ... 那是因为你在 html 头部有那一行,而不是因为 ajax,它不应该对输出有任何影响。 是的,但它指的是第一行,如果你写了 的 实例,它总是显示错误。 你能检查ajax调用的实际输出吗,如果它显示了你想要的,那么错误一定来自代码的另一部分。 你是对的@lightbringer。现在我只需要处理 JSON 以将其放入 DOM,非常感谢。【参考方案2】:请制作 2 个文件,一个“t.php”文件和一个“t.html”文件,然后在其中添加我的代码。运行代码并查看响应。您只需要使用响应来获取由逗号“,”分隔的值!!!
/************************ 已更新 *************************/
//t.php
<?php
$a = array();
$a[]=1;
$a[]=2;
$a[]=3;
echo "$a[0],$a[1],$a[2]";
?>
//t.html
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript">
function fun()
$.ajax(
method: "GET",
url: "t.php",
data: ,
dataType: "html", //expect html to be returned
success: function(response)
//$("#debug").html(response); //Outputs the html of php file into #dialog div
alert(response);
document.getElementById("debug").innerHTML = (response); //Outputs the html of php file into #dialog div
)
</script>
<button onclick="fun()">Call Ajax Fun</button>
<div id="debug"></div>
这有帮助吗?
【讨论】:
是的,这就是我想做的。那么必须是 .html 文件吗?以上是关于将 PHP 数组传递给外部 jQuery $.ajax的主要内容,如果未能解决你的问题,请参考以下文章
将 PHP 变量传递给外部 JavaScript(或 jQuery)文件的最有效方法
将 PHP 变量传递给外部 JavaScript(或 jQuery)文件的最有效方法