使用 Ajax 在 Javascript 文件中传递和使用 PHP 变量

Posted

技术标签:

【中文标题】使用 Ajax 在 Javascript 文件中传递和使用 PHP 变量【英文标题】:Pass and use a PHP variable in a Javascript file with Ajax 【发布时间】:2022-01-22 05:28:17 【问题描述】:

我有一个 php 脚本,我可以在其中将查询的内容放入 Postgresql 数据库:

<?php
require_once 'connection.php'; 
$query1 = pg_query("This_is_my_query");
$instruction = "[";
while ($row = pg_fetch_array($query1)) 
    $row1= $row['row1'];
    $row2= $row['row2'];
    $instruction .= "name : '". $row1. "', y : ". $row2. ",";

$instruction .= "]";
echo $instruction;
?>

echo $instruction 给出:

[name : 'Prestation', y : 1]

然后我有一个 JS 文件,我尝试在其中显示和使用 $instruction 变量。 我使用 Ajax,我的脚本就是这样一个:

$.ajax(
    url : 'Path_To_Php_File_Is_OK', // requesting a PHP script
    dataType : 'json',
    type: "GET",
    async : false,
    success : function (data)  // data contains the PHP script output
       alert(data);
,
error: function(data)              
    alert('error');
,
)

结果是没有调用成功函数,我有alert('error')。 但是当我使用 dataType 'text' 而不是 'Json' 时,成功功能没问题,我有 alert(data)如何解释这种行为?我该如何解析 PHP 变量 $instruction

非常感谢任何帮助,谢谢!

【问题讨论】:

我相信您需要从 PHP 发送 JSON 标头。您还应该使用 json_encode 而不是手动创建 JSON。 请不要创建自己的 json 字符串。有些事情不可避免地会出错。相反,构建一个数组或对象并使用json_encode 【参考方案1】:
    无需手动创建 json 字符串。只需使用json_encode() 构建和排列并将其编码为 json 您必须在response headers 中设置 JSON 内容类型 关闭?&gt;标签是多余的,不推荐使用(见PSR-12

所以最终你的代码应该是这样的

<?php

require_once 'connection.php';

$query1 = pg_query("This_is_my_query");

$instructions = [];
while ($row = pg_fetch_array($query1)) 
    $row1 = $row['row1'];
    $row2 = $row['row2'];
    $instructions[] = ['name' => $row1, 'y' => $row2];


header('Content-Type: application/json; charset=utf-8');

echo json_encode($instructions);

【讨论】:

很好用!非常感谢@Hast !!

以上是关于使用 Ajax 在 Javascript 文件中传递和使用 PHP 变量的主要内容,如果未能解决你的问题,请参考以下文章

jquery ajax向spring mvc controller中传值并接受及解析返回值

jquery ajax向spring mvc controller中传值并接受及解析返回值

jquery ajax向spring mvc controller中传值并接受及解析返回值

jquery ajax向spring mvc controller中传值并接受及解析返回值

使用hive -f 向sql文件中传变量

是否可以使用 JavaScript/AJAX 在客户端创建文件? [复制]