2017-05-08 168 views
0

當我試圖json_decodejson.stringify數據使其返回NULL如此使用** json_last_error知道錯誤,並將其返回以下錯誤消息使用ajax和javascript對象將值傳遞給另一個php ..?

語法錯誤,畸形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); 
    } 
    }); 
} 

下面是六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 ......一個價值這雙將是空的。

+0

你絕對沒有'$ _ POST ['DataA的]'你'$ _POST'。 –

+0

@u_mulder ...你是說javascript對象的值沒有發佈到我的另一個php頁面。 – Pradeep

+0

'print_r($ _ POST)',看看你有什麼 –

回答

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 
相關問題