使用 Ext.Ajax.request 发布到 URL 时,我注意到奇怪的行为。
我有以下 Ext.Ajax.request:
var url = url_posted_to.org,
obj =
{
"evaluation": {
"evaluation_id":44216,
"garden_id":37288,
"eval_type":1,
"score":15,
"rating":"GD",
"rating_year":2013,
"best_of":"NADA!",
"special_award_specified":null,
"evaluator_id":"265",
"nate_siegel_award":0,
"rainbarrel":0,
"date_evaluated":"1969-12-31T18:00:00",
"comments":"",
"scoresheet":{
"color":1,
"plant_variety":2,
"design":3,
"maintenance":4,
"environmental_stewardship":5
}
},
"garden":{
"garden_id":37288,
"name":"Larry Opelt",
"no_longer_exists":0,
"raingarden":0
},
"geolocation":{
"latitude":44.9615709,
"longitude":-93.3353673,
"accuracy":25
}
};
Ext.Ajax.request({
method: "POST",
url: url,
params: obj,
success: function (response) {
alert('success: ' + response.responseText);
},
failure: function (e, jqxhr) {
alert('failure!');
alert(e.status);
}
});
我收到错误:POST url_posted_to.org 500(内部服务器错误)。
表单数据的响应标头如下所示:
Form Dataview sourceview URL encoded
evaluation:44216
evaluation:37288
evaluation:1
evaluation:15
evaluation:GD
evaluation:2013
evaluation:NADA!
evaluation:
evaluation:265
evaluation:0
evaluation:0
evaluation:1969-12-31T18:00:00
evaluation:
evaluation:[object Object]
garden:37288
garden:Larry Opelt
garden:0
garden:0
geolocation:44.9615709
geolocation:-93.3353673
geolocation:25
然而......这是奇怪的部分......如果使用jQuery的Ajax实现发出相同的请求,一切都很好。
这是 jQuery Ajax 调用:
$.ajax({
type: 'POST',
url: url,
data: params,
success: function(data, textStatus, jqXHR){
if(data.result == 'success'){
$('#results').html('RESULTS:<br>');
$('#results').append(JSON.stringify(data, null, '<BR>'));
} else {
$('#results').html('ERROR:<br>');
$('#results').append(JSON.stringify(data));
}
},
error: function(jqXHR, exception, errorThrown ){
$('#results').html('ERROR:<br>');
$('#results').append(jqXHR.status);
},
complete: function(){
alert("ajax complete: "+data.result)
},
});
和响应头(看起来非常好):
evaluation[best_of] NADA!
evaluation[comments]
evaluation[date_evaluated... 1969-12-31T18:00:00
evaluation[eval_type]
evaluation[evaluator_id] 265
evaluation[nate_siegel_aw... 0
evaluation[rainbarrel] 0
evaluation[rating] GD
evaluation[rating_year] 2013
evaluation[score] 15
evaluation[scoresheet][co... 1
evaluation[scoresheet][de... 3
evaluation[scoresheet][en... 5
evaluation[scoresheet][ma... 4
evaluation[scoresheet][pl... 2
evaluation[special_award_...
garden[name] Larry Opelt
garden[no_longer_exists] 0
garden[raingarden] 0
geolocation[accuracy] 25
geolocation[latitude] 44.9615709
geolocation[longitude] -93.3353673
所以,看起来 Ext.Ajax 正在用嵌套的 JSON 做一些时髦的事情。有任何想法吗?