无法使用AJAX获取PHP变量

时间:2016-03-18 14:14:47

标签: javascript php jquery ajax

我似乎无法弄清楚问题是什么。对于我的下一个小项目,我正在创建带有数据库等的动态网页。我需要从PHP文件中获取所有必需的变量。但由于某些原因,如果我包含另一个PHP文件,我就无法做到。 (我需要它用于数据库查询)。

main.php

include ('databaseQueries.php');

    if (isset($_POST["points"])){
        $points = json_decode($_POST["points"]);
        if($_POST["execute"] == 1){

        }
    }

    $advert= array(
        'Hello' => 'Hello world!',
        'bye' => 'Why bye?',
     );

    echo json_encode($advert, $another);

pageJs.js

$.ajax({
        url : 'php/main.php',
        type : 'POST',
        dataType : 'json',
        success : function (result) {
            console.log(result);
        },
        error : function (err) {
           console.log("Failed");
        }
    })

databaseQueries.php

$another = "another string";

如果我从json_encode中删除 include $ another 变量。一切正常,我在控制台日志中得到了对象。但如果我离开这两件事,Ajax调用失败了。

我做错了什么,如何同时获得$ test数组和$另一个变量?

提前感谢!

2 个答案:

答案 0 :(得分:6)

您错误地使用了json_encode。来自documentation

  

string json_encode(mixed $ value [,int $ options = 0 [,int $ depth = 512]])

您正尝试将$another作为options参数发送给该函数。

你可以这样做:

$ret = array($advert, $another);
echo json_encode($ret);

答案 1 :(得分:2)

除非我完全错了,否则我无法看到你向你的帖子发送任何内容

$.ajax({
    url : 'php/main.php',
    type : 'POST',
    dataType : 'json'
    // I would expect a data call here, something like:
    data: $(form).serialize(), // OR { points: 3, execute: 1 }
    success : function (result) {
        console.log(result);
    },
    error : function (err) {
       console.log("Failed");
    }
})

我假设你想用result-> key;

的格式吐出一些结果

所以Keeleon上面的答案很好:

$ret = array($advert, $another);
echo json_encode($ret);

但你也可以这样做:

//Adding everything to array, and asking json_encode to encode the array is the key. Json_encode encodes whatever is in the first argument passed to it.
$ret = array('advert'=>$advert, 'another'=>$another,'test'=>$test);
echo json_encode($ret);

希望这能回答你的问题。