将 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)文件的最有效方法

将php数组传递给jquery函数

将 jQuery 数组传递给 PHP (POST)

将 PHP $_POST 数组传递给 javascript/jQuery 以通过 ajax 发送回 PHP

有没有办法将多个数组传递给 PHP json_encode 并用 jQuery 解析它?