Jquery ajax 在 JSON 中解析对象的 GET 方法
Jquery ajax GET method with an object parse in 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 代码。
在使用 firebug 进行调试时,我检查了变量 "entree",它的格式正确,但我在 PHP 方面没有得到任何东西。
nota : 我更喜欢使用 GET 类型而不是 POST 类型。
有什么想法吗?
这是因为在第一个请求中,您将数据作为 x-www-form-urlencoded
发送,这正是您的 PHP 代码所期望的:
name=John&date=05 & 06 mars
而在第二个中,您在请求中发送 JSON 格式的数据,例如:
'{"name":"John","date":"05 & 06 mars"}'
另请注意,您应该删除 async: false
,因为使用它被认为是一种可怕的做法。如果您检查您的控制台,您将看到关于其使用的浏览器警告。
因此,为了让一个版本可以处理对象和给定的响应,此代码有效:
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 格式发送我的数据,而是像一个没有字符串化的对象一样。
感谢您对这种神秘行为发表意见:
此代码有效:
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 代码。 在使用 firebug 进行调试时,我检查了变量 "entree",它的格式正确,但我在 PHP 方面没有得到任何东西。
nota : 我更喜欢使用 GET 类型而不是 POST 类型。
有什么想法吗?
这是因为在第一个请求中,您将数据作为 x-www-form-urlencoded
发送,这正是您的 PHP 代码所期望的:
name=John&date=05 & 06 mars
而在第二个中,您在请求中发送 JSON 格式的数据,例如:
'{"name":"John","date":"05 & 06 mars"}'
另请注意,您应该删除 async: false
,因为使用它被认为是一种可怕的做法。如果您检查您的控制台,您将看到关于其使用的浏览器警告。
因此,为了让一个版本可以处理对象和给定的响应,此代码有效:
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 格式发送我的数据,而是像一个没有字符串化的对象一样。