我开始使用jquery $ .ajax()但是我无法回复我想要的...我发送了这个:
$(function(){
$.ajax({
url: "graph_data.php",
type: "POST",
data: "casi=56&nada=48&nuevo=98&perfecto=100&vales=50&apenas=70&yeah=60",
dataType: "json",
error:
function (xhr, desc, exceptionobj) {
document.writeln("El error de XMLHTTPRequest dice: " + xhr.responseText);
},
success:
function (json) {
if (json.error) { alert(json.error); return; }
var output = "";
for (p in json) {
output += p + " : " + json[p] + "\n";
}
document.writeln("Results: \n\n" + output);
}
});
});
我的php是:
<?php
$data = $_POST['data'];
function array2json($data){
$json = $data;
return json_encode($json);
}
?>
当我执行这个时,我出来了:
结果:
就像我曾经在php中有一个echo array2json语句,但它只是给了回复的胡言乱语......我真的不知道我做错了什么,我用谷歌搜索了大约3个小时才得到基本的同样的东西。另外我不知道如何将参数传递给$ .ajax函数中的“data:”,如从网页获取信息,有人可以帮助我吗?
修改
我做了你的建议并打印数据现在非常感谢你=)然而,我想知道,我怎么能将数据发送到jQuery中的“data:”部分所以它来自于让我们说用户输入,我也在检查php文档,它说我可以编写类似的东西:
json_encode($a,JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP)
然而,如果我这样做,我得到一个错误,说json_encode接受1参数,我给2 ...任何想法为什么?我正在使用php 5.2
答案 0 :(得分:7)
首先:您传递给PHP脚本的数据将位于$_POST
,而不是$_POST['data']
。
下一步:你需要用一些数据实际调用array2json
函数......那是完整的代码示例吗?
此外,我不确定array2json
应该做什么...为什么不直接致电json_encode
?
对于您的示例,您只需使您的PHP文件看起来像这样:
print json_encode($_POST);
最后,你应该得到像Firebug这样的工具来轻松调试你的AJAX调用。
修改强>:
要从用户发送数据,您只需在页面中的任意位置添加form,然后捕获submit事件和serialize数据,或者只是单个输入字段的get the value。然后,您可以使用它构建数据查询,作为字符串或对象。还有非常受欢迎的jQuery Form plugin使这一切变得更容易。
您收到错误的原因是因为json_encode
的第二个参数在PHP 5.3.0之前未添加。所以,如果你有任何比这更早的东西,你就无法使用。