我想通过jQuery / Ajax将一些数据发布到JSON文件中,但我不会将数据作为JSON对象接收。
我的JSON内容如下所示:
富= ABC&安培;巴= DEF
但我想要这个:
{ "富" :" abc", "杆" :" def }
HTML
<form id="foobar">
<label for="bar">A bar</label>
<input id="foo" name="foo" type="text" value="" />
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
JS
var request;
$("#foobar").submit(function(event){
if (request) {
request.abort();
}
var $form = $(this);
var serializedData = $form.serialize();
request = $.post("dataSaveAjax.php", {json : JSON.stringify(serializedData)});
event.preventDefault();
});
PHP
<?php
$file = fopen("dataAjax.json","w+");
$json = $_POST['json'];
$jsonDecode = json_decode($json);
fwrite($file, $jsonDecode);
fclose($file);
?>
答案 0 :(得分:1)
如果您想使用serialize
,请使用
var data= JSON.parse($("#foobar").serializeArray()); //not serialize()
如果对象/数组通过here,那就是 通过
.serializeArray()
序列化。如果字符串传递
$.param()
,则它不会执行任何操作 进一步
您的代码应为
var request;
$("#foobar").submit(function(event){
if (request) {
request.abort();
}
var data= {
"foo":$("#foo").val(),
"bar":$("#bar").val()
};
//don't do this if you want in json formate
//var serializedData = $form.serialize();
request = $.post("dataSaveAjax.php", {json : JSON.stringify(data)});
event.preventDefault();
});
或您可以使用
var serializedData = $form.serializeArray();
答案 1 :(得分:-1)
由于JS中的JSON.stringify
调用,您的数据应该已经格式化为JSON。 PHP文件中的json_decode正在撤消JSON.stringify
的工作 - 只需将$_POST['json']
的值写入文件即可。您应该很好。
<?php
file_put_contents('dataAjax.json', $_POST['json']);
应该是你需要在PHP方面做的所有事情。