您好我正在开发一个phonegap应用程序,并在互联网上找到一种使用$.getJSON()
将数据传递到php文件的方法,就是我在javascript上有一个词典
var info =[];
if(document.getElementById(temp).checked){
info[temp]="0";
}
else{
info[temp]="1";
}
}
因此,一旦创建了字典,我想将其发送到外部php文件。
var archivoValidacion = "http://mysite.com/prueba.php?jsoncallback=?";
$.getJSON( archivoValidacion, {id_array:JSON.stringify(info)})
.done(function(respuestaServer){
alert(respuestaServer.validacion)});
这是我得到的PHP
<?php
$resultados = array();
$id_array = $_GET['id_array'];
$resultados["validacion"] = $id_array;
$resultadosJson = json_encode($resultados);
echo $_GET['jsoncallback'] . '(' . $resultadosJson . ');';
?>
问题是,当弹出窗口[]
当我有一个普通的数组并发送它时,我可以打印出php上的每一个数组元素,所以这个方法适合我
感谢您的建议
答案 0 :(得分:0)
你在这里做的是jsonp(带填充的JSON)...试试你的js文件
var archivoValidacion = "http://mysite.com/prueba.php";
$.ajax({
dataType:"jsonp",
url:archivoValidacion,
"data": {id_array:JSON.stringify(info)},
"success": function(respuestaServer){
alert(respuestaServer.validacion)
}});
也在php方面你必须改变
echo $_GET['jsoncallback'] . '(' . $resultadosJson . ');';
到
echo $_GET['callback'] . '(' . $resultadosJson . ');';
答案 1 :(得分:0)
我不知道你在回调你做了什么,但我认为你应该这样试试:
info应该是一个对象而不是一个数组
var info ={};
if(document.getElementById(temp).checked){
info[temp]="0";
} else{
info[temp]="1";
}
你不需要JSON.stringify
var url= "http://mysite.com/prueba.php";
$.getJSON( url, {"id_array":info})
.done(function(data){
alert(data.validacion);
});
如果你用getJSON调用prueba.php然后你应该返回一个json字符串,回调是.done()中定义的函数:
<?php
$r = array();
// print_r($_GET); exit; // Maybe do a print_r and stop here to see what you got in firebug
$id_array = $_GET['id_array'];
$r["validacion"] = $id_array;
echo json_encode($r); // See what your result look like in firebug console tab
?>
答案 2 :(得分:0)
你需要改变一些事情:
JSON不支持关联数组,因此您需要将var info = [];
更改为var info = {};
并指定您需要执行的值info.temp = "0"
不要使用JSON.stringfy,因为你的php脚本的响应是这样的
{"validacion":"{\"temp\":\"0\"}"}
当您解雇alert(respuestaServer.validacion)
时,您将拥有[对象]。可以更好地访问json成员:alert(respuestaServer.validacion.temp)
然后,固定代码是
var info ={};
if(document.getElementById(temp).checked){
info.temp="0";
}
else{
info.temp="1";
}
...
var archivoValidacion = "http://mysite.com/prueba.php?jsoncallback=?";
$.getJSON( archivoValidacion, {id_array:info})
.done(function(respuestaServer){
alert(respuestaServer.validacion.temp)
});