2015-05-04 61 views
0

今天我陷入了與Ajax的問題​​。我正在做這個請求:Ajax請求返回HTTP 503,但腳本正常工作

$.ajax({ 
    type: 'POST', 
    url: 'http://hostname/controller/action', 
    data: {param1 : 'foo'}, 
    timeout: 5000, 
    success: function(data) { 
     alert(data); 
    }, 
    error: function(data) { 
console.log(data) 
    } 
    }); 

基於Zend的服務器端腳本。服務器 - apache2。腳本的響應是我期望的,但HTTP代碼是503(服務暫時不可用)。 如果我打開這個URL作爲瀏覽器地址欄獲取 - 它返回我期望的(字符串),但HTTP響應代碼也是503.

什麼可能導致它?

UPD:操作包含echo "Some string"; GET或POST - 不重要。 插頭:

Accept:*/* 
Accept-Encoding:gzip, deflate 
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 
Connection:keep-alive 
Content-Length:18 
Content-Type:application/x-www-form-urlencoded 
Host:hostname 
Origin:http://hostname 
Referer:http://hostname/controller 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 
X-Requested-With:XMLHttpRequest 
+0

503謝謝你能請發送的動作代碼?行動中發生了什麼? –

+0

您是否也可以發佈請求標頭和正在傳入的主體 - 在網絡面板中檢查chrome開發工具。 –

+0

在瀏覽器中它是GET方法,並且在ajax中使用POST方法,因此響應必須不同,具體取決於您的Web服務是如何定義的。 – Codelord

回答

0

問題是在服務器端,Zend公司是modifyied總是返回所有回覆

0

使用完成而不是成功和錯誤。

$.ajax({ 
    type: 'POST', 
    url: 'http://hostname/controller/action', 
    data: {param1 : 'foo'}, 
    complete: function(response) { 
     if(response['status'] === 200) { 
     // success 
     var data = response['responseJSON']; 
     // ... 
     } else { 
     // ... 
     } 
    } 
    }); 
+0

好的,但是如果我們需要處理服務器不響應200 OK的情況,則會適用。但我的服務器總是返回503 – Clyde

+0

無論如何,謝謝你的回覆 – Clyde