私は非常に単純なjavascriptメソッドを作成しました。このメソッドは、サーバーにajaxリクエストを送信し、最後にコールバック関数を実行する必要があります。問題は、指定されたコールバックが実行されないことです。また、Chrome開発者ツールで、リクエストが実行され、目的のJSONが返されることがわかります。また、コンテンツタイプをapplication/jsonに設定しました。
これが私が使用したコードです:
this.checkAvailability = function(){
console.log('Before test');
$.post('/Roomanizer-Website/Reservation', {
action: 'checkavailability',
categoryname: $('#categoryname').val(),
roomcount: $('#roomcount').val(),
start: $('#start').val(),
end: $('#end').val()
}, function(data){
console.log('callback');
console.log(data);
if(data.available == 'true'){
$('#start_confirmation').html(data.arrival);
$('#end_confirmation').html(data.leaving);
$('#price_confirmation').html(data.price);
this.nextStep();
} else {
alert('There are no free rooms during your chosen period.');
}
}, 'json');
};
「テスト前」はコンソールに書き込まれますが、「コールバック」は書き込まれません。しかし、すでに述べたように、リクエストは実行され、正しいJSONを返します。
{arrival : '20/06/2012', leaving : '28/06/2012', price: '0.0', available: 'true'}
そして最後に、httpヘッダーを表示します。
Request URL:http://localhost:8080/Roomanizer-Website/Reservation
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:application/json, text/javascript, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Content-Length:97
Content-Type:application/x-www-form-urlencoded
Cookie:JSESSIONID=AF1302ECA526216D8207F365F6802814
Host:localhost:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/Roomanizer-Website/Controller?action=booking
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5
X-Requested-With:XMLHttpRequest
Form Dataview URL encoded
action:checkavailability
categoryname:Economy
roomcount:1
start:20/06/2012
end:28/06/2012
Response Headersview source
Content-Length:81
Content-Type:application/json;charset=ISO-8859-1
Date:Mon, 11 Jun 2012 12:19:45 GMT
Server:Apache-Coyote/1.1
誰かがこの問題を解決するために熱心に知っていますか?
PS:私はJQuery1.5.2を使用しています