我在javascript中有对象,我需要使用ajax将此对象发送到php。
我可以“只发送”这个对象,但我的问题是我需要完全按原样发送对象值类型而不是所有字符串:意味着NULL为NULL,布尔值为boolean等等......
试试这个:
var js_object= <?php echo json_encode( array("a"=>NULL, "b"=>TRUE, "C"=>1.1) ); ?>;
$.ajax({
type: "POST",
url: "some.php",
dataType: "json",
data: JSON.stringify(js_object),
contentType: "application/json; charset=UTF-8",
success: function(msg){
}
});
但这根本不会向服务器发送数据。并没有给出任何错误。哪里错了?
答案 0 :(得分:1)
您的代码没有任何问题
我刚刚向post
添加了httpbin.org
查询的代码段:
$.ajax({
type: 'POST',
url: '//httpbin.org/post',
data: JSON.stringify({name: 'test', 'null': null, 'true': true}),
success: onSuccess,
error: onError,
dataType: 'json',
contentType: 'application/json; charset=UTF-8'
});
function onSuccess(data){
// data is parsed json response
console.log('Request copy:', data.json);
console.log('Full response', data);
}
function onError(xhr) {
console.log(xhr.status, xhr.responseText);
}
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.js"></script>
服务器端示例脚本:
<?php
$json = file_get_contents('php://input');
$data = json_decode($json, true);
header('Content-type: application/json');
echo json_encode($data);