2016-11-06 19 views
0

對象解析AJAX GET方法我感謝你說你對這個misterious行爲的意見:的Jquery在JSON

此代碼的工作:

JS代碼:

$.ajax({ 
     url: "ajouterEntreeParExcel.ajax.php", // url de la page à charger 
     data: {"name":"John","date":"05 & 06 mars"}, 
     cache: false, // pas de mise en cache 
     async: false, 
     contentType : "application/json", 
     dataType: "json", 
     success:function(jsonRetour){ 

     }, 
     error:function(XMLHttpRequest, textStatus, errorThrows){ // erreur durant la requete 

     } 
    }); 

和PHP代碼:

 $name = $_GET["nom"]; 
     $date = $_GET["date"]; 

而這一次不起作用

var dataAjax = {}; 
    dataAjax["name"] = "John"; 
    dataAjax["date"] = "05 & 06 mars"; 
    var entree = JSON.stringify(dataAjax); 

    $.ajax({ 
     url: "ajouterEntreeParExcel.ajax.php", // url de la page à charger 
     data: entree, 
     cache: false, // pas de mise en cache 
     async: false, 
     contentType : "application/json", 
     dataType: "json", 
     success:function(jsonRetour){ 

     }, 
     error:function(XMLHttpRequest, textStatus, errorThrows){ // erreur durant la requete 

     } 
    }); 

具有相同的PHP代碼。 在調試與螢火蟲,我檢查變量「主菜」,這是很好的格式化,但我沒有得到任何東西在PHP方面。

nota:我喜歡使用GET類型而不是POST類型。

有什麼想法?

+0

永遠不要使用'async:false'!這是一種可怕的做法,現在已棄用 – charlietfl

回答

0

所以爲了有一個版本的對象,並給予responde,此代碼的工作的工作:

var dataAjax = {}; 
    dataAjax["date"] = obj["Date"]; 
    dataAjax["comite"] = obj["Comité Int.Rég."]; 


    $.ajax({ 
     url: "ajouterEntreeParExcel.ajax.php", // url de la page à charger 
     data: dataAjax, 
     cache: false, // pas de mise en cache 
     //async: false, 
     //contentType : "application/json", 
     dataType: "json", 
     success:function(jsonRetour){ 
      printValueTraitee = printValueTraitee + '<span class="green">OK</span>'; 
     }, 
     error:function(XMLHttpRequest, textStatus, errorThrows){ // erreur durant la requete 
      printValueTraitee = printValueTraitee + '<span class="red">KO</span>'; 
     } 
    }); 

,所以我不使用JSON格式發送我的數據了,但探微像一個對象沒有把它串起來。

1

這是因爲在第一個請求,你要發送的數據爲x-www-form-urlencoded,這是你的PHP代碼期待:

name=John&date=05 & 06 mars 

而在第二個你的請求發送JSON格式的數據如:

'{"name":"John","date":"05 & 06 mars"}' 

另外請注意,您應該刪除async: false,因爲它被認爲是可怕的做法是使用它。如果你檢查你的控制檯,你會看到一個關於它的使用的瀏覽器警告。

+0

,但第一個命題中的{「name」:「John」,「date」:「05&06 mars」}是翻譯名稱= John&date = 05&06 mars?是否有可能爲「動態」版本做相同的翻譯,我想以字符串形式發送一個對象? – Naeco

+0

它由jQuery在內部翻譯。如果需要,您可以將字符串作爲JSON發送,但是您需要修改您的PHP代碼以正確讀取它。就個人而言,我不會打擾,因爲PHP默認情況下會設置爲像您一樣工作。你在第一個例子中使用的代碼沒有任何問題。 –