2013-03-23 21 views
4

我有以下問題:在jQuery.post,我得到的消息:GET方法不允許請求的URL

我在燒瓶中的應用工作,我希望將一些數據傳遞到服務器通過AJAX。我對這個AJAX的東西很新,所以我無法得到正確的東西。

在我的客戶端,當用戶點擊一個圖標,我要通過jQuery.post存儲在變量消息傳遞一些數據:

jQuery("#icon_ID").click(function() { 
    var message = { 
     'GRAPH_TYPE': graphType 
    }; 
    var _sendOnSuccess = function() { 
    } 

    var jqxhr = jQuery.post('/graph', message, _sendOnSuccess, 'json'); 
}); 

在我的服務器端,我有以下代碼:

@app.route('/graph', methods = ['POST']) 
@login_required 
def physical_graph(): 
    ret_data = request.form['GRAPH_TYPE'] 
    return "" 

我現在想要做的就是訪問服務器端的GRAPH_TYPE。然而,當我點擊圖標,我得到錯誤信息:

不允許的方法

GET方法不允許請求的URL。

我真的不明白爲什麼Python告訴我,我使用的是GET方法,實際上我使用POST方法。

可以請別人幫我這個嗎?我該怎麼做才能解決這個問題?如果還有其他方法可以使用,請隨時給我任何形式的建議。請記住,除了jQuery之外,我不想使用其他JavaScript庫。

預先感謝您!

+2

你是如何確認一個實際的POST正在取得? – alex 2013-03-23 22:46:03

+0

我會使用firefox上的firebug控制檯或者chrome上的網絡XHR來檢查ajax調用的細節。 – Vassilis 2013-03-23 23:01:14

+0

在控制檯上。當我點擊'icon_ID'圖標時,得到:GET/graph HTTP/1.1「405,這意味着一個GET代替了POST,但我不知道爲什麼,我希望那是你問的問題? – Belphegor 2013-03-23 23:01:45

回答

1

這是因爲要傳遞一個object作爲data

var message = { 
    'GRAPH_TYPE': graphType 
}; 

在這種情況下jQuery嘗試URL編碼對象,並且默認與數據類型application/x-www-form-urlencoded; charset=UTF-8 ANS發送GET請求發送。爲了克服這個問題,確保你傳遞一個jQuery字符串數據參數,並要做到這一點,你可以使用JSON.stringify

var message = JSON.stringify({ "GRAPH_TYPE": graphType }); 
+0

但[jQuery.post](http://api.jquery.com/jQuery.post/)接受[PlainObjects](http://api.jquery.com/Types #PlainObject),所以'message'應該沒問題。 – 2013-03-23 23:49:47

+0

@Sheikh Heera:當我嘗試你的方式時 - 它是一樣的,所以可能這不是問題。 – Belphegor 2013-03-24 00:46:10

相關問題