我似乎无法弄清楚问题是什么。对于我的下一个小项目,我正在创建带有数据库等的动态网页。我需要从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数组和$另一个变量?
提前感谢!
答案 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);
希望这能回答你的问题。