如何使用getJSON将javascript关联数组传递到php文件
how to pass a javascript associative array to php file using getJSON
你好,我正在开发一个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上打印出每个数组元素,所以这个方法对我来说是
感谢
您在这里所做的是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 . ');';
我不知道你在用回调做什么,但我认为你应该这样尝试:
信息应该是一个对象,而不是数组
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
?>
您需要更改一些内容:
JSON不支持关联数组,因此您需要将var info = [];
更改为var info = {};
,并且要分配值,您需要执行info.temp = "0"
不要使用JSON.stringfy,因为来自php脚本的响应类似于以下
{"validacion":"{'"temp'":'"0'"}"}
当您启动alert(respuestaServer.validacion)
时,您将拥有[object object]。更好地访问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)
});
相关文章:
- 如何在php文件中获取$.post-ajax传递的值
- Javascript运行php文件,然后下载文件
- 通过Ajax将JavaScript函数传递给PHP文件
- 我想使用模态通过php文件发送邮件,并且我希望在提交关闭后关闭pop
- 通过ajax到php文件获取单选按钮值
- 每天用javascript包含不同的php文件
- 如何使用javascript调用Php文件
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 在CodeIgniter视图中将Javascript或jQuery代码作为PHP文件编写可以吗
- 从表单中动态生成一个字符串,传递给通过AJAX加载的PHP文件
- 包括php文件和几个js文件
- 将JavaScript变量传递到HTML输入框和(在PHP文件中使用)
- PHP文件没有't从Javascript应用程序获取$_POST
- 如何显示由ajax调用运行的PHP文件的echo
- 如何将php变量从php文件传递到js文件
- 如何使用javascript/jquery将变量从一个PHP文件传递到另一个PHP文件
- 在同一主机上对PHP文件使用XMLHTTP请求的Javascript违反了同源策略
- 通过Wordpress中的jquery调用运行php文件
- 通过Javascript调用php文件
- 如果($_SERVER[“REQUEST_METHOD”]=“POST”)条件在ajax调用不同的php文件进行验证和提