我正在尝试使用jQuery AJAX将JSON发送到PHP文件,基本上我要做的是获取一堆子元素的值和id然后将它们分配给JSON对象,然后通过ajax到PHP文件,然后处理它并将其输入数据库。
这是我的代码,
的Javascript / jQuery的:
function test(){
var selects = $('#systems_wrapper').find('.dropDowns');
var newArray = new Array();
selects.each(function(){
var id = $(this).attr('id');
var val = $(this).val();
var o = { 'id': id, 'value': val };
newArray.push(o);
});
$.ajax({
type: "POST",
url: "qwer.php",
dataType: 'json',
data: { json: newArray }
});
}
PHP:
<?php
$json = $_POST['json'];
$person = json_decode($json);
$file = fopen('test.txt','w+');
fwrite($file, $person);
fclose($file);
echo 'success?';
?>
它会创建文件,但它完全是空白的,不知道它可能是什么?
提前Thanx!
答案 0 :(得分:19)
您可以尝试使用JSON.stringify()
方法将数组自动转换为JSON。只需传递此输出。
data: { json: JSON.stringify(newArray) }
希望这有帮助
答案 1 :(得分:2)
不要使用阵列 使用这样的简单字符串:
var o = '[';
selects.each(function(){
var id = $(this).attr('id');
var val = $(this).val();
o += '{ "id": "'+id+'", "value": "'+val+'" },';
});
o = o.substring(0,o.length-1);
o += ']';
并在ajax中发送字符串'o'
data: { json: newArray }
在php文件中只需制作一个json_decode($ json,true);
它将返回一个数组,您可以通过foreach访问该数组
如果要查看数组,请使用var_dump($ person);
答案 2 :(得分:1)
您应该在ajax POST上设置contentType。我会使用contentType:“application / json”;
答案 3 :(得分:1)
您应该使用json_encode()
而不是json_decode()
!通过这种方式,您将获得json字符串并能够编写它。
答案 4 :(得分:1)
如果要将json_decode保存到文本文件中,则无需使用它。 jQuery以JSON格式对您的数组进行编码,然后PHP应该将该格式直接写入文本文件。如果要打开该文件并以可用的方式访问数据,请将其内容读入变量,然后在其上运行json_decode()。