使用没有类型转换的ajax将发布数据从js发送到php

时间:2016-06-10 17:53:54

标签: javascript php jquery ajax

我在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){
    }
});

但这根本不会向服务器发送数据。并没有给出任何错误。哪里错了?

1 个答案:

答案 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);