使用ajax和javascript对象将值传递给另一个php ..?

时间:2017-05-08 10:21:33

标签: javascript php jquery json ajax

当我尝试 json_decode json.stringify数据时,它返回NULL,因此使用** json_last_error 来了解错误并返回以下错误消息

语法错误,格式错误的JSON

任何人都可以验证我在javascript函数中附带的ajax代码,并发现我已完成的错误。

以下是脚本代码

 <script>
 function callphp(){
 var dataa = {};
 dataa.dateipone = jQuery("#dateInputone").val();
 dataa.dateiptwo = jQuery("#dateInputtwo").val(); 
 dataa.ino = jQuery("#ino").val();
 dataa.submit = "submit";
 alert("Hello")
 $.ajax({
    url : "six-cuf.php",
    type: 'POST',
    data :JSON.stringify(dataa),
    contentType : "application/json; charset=utf-8",
    success:function(data)
    {
        if(data){ 
          alert(data);   
          //console.log("Data from Server"+JSON.stringify(data));
        }
        else{
          console.log("Data is empty");
        } 
    },
    error: function(xhr) {
        alert('Error!  Status = ' + xhr.status + " Message = " + xhr.statusText);
        //console.log('Error!  Status = ' + xhr.status + " Message = " +  xhr.statusText);
    }
   });
 }

以下是6-cuf.php

  $data = json_decode($_POST['dataa']);
  print_r($data);

  switch (json_last_error()) {
   case JSON_ERROR_NONE:
         echo ' - No errors';
         break;
   case JSON_ERROR_DEPTH:
         echo ' - Maximum stack depth exceeded';
          break;
   case JSON_ERROR_STATE_MISMATCH:
         echo ' - Underflow or the modes mismatch';
          break;
   case JSON_ERROR_CTRL_CHAR:
         echo ' - Unexpected control character found';
          break;
   case JSON_ERROR_SYNTAX:
         echo ' - Syntax error, malformed JSON';
          break;
   case JSON_ERROR_UTF8:
         echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
          break;
   default:
         echo ' - Unknown error';
         break;
   }

   if(isset($_POST["dateipone"],$_POST["dateiptwo"],$_POST["ino"],$_POST["options"],$_POST["dateone"],$_POST["datetwo"],$_POST["submit"]))
{

    //php code
}
dateipone,dateiptwo和dateone,datetwo中的

...这一对的值将为空。

1 个答案:

答案 0 :(得分:0)

在传递给服务器之前,不需要将任何内容编码到json中。你可以传递普通的javascript对象,浏览器会做其余的事情:

var dataa = {};
dataa.dateipone = jQuery("#dateInputone").val();
dataa.dateiptwo = jQuery("#dateInputtwo").val(); 
dataa.ino = jQuery("#ino").val();
dataa.submit = "submit";
$.ajax({
    url : "six-cuf.php",
    type: 'POST',
    data: dataa,
    // no content-type here!
    success:function(data) {

    }
});

在服务器端照常检查$_POST数组:

print_r($_POST);
// you will have keys: `dateipone`, `dateiptwo`, `ino` and `submit` in it