2013-10-19 27 views
0

我正在做ruby的ajax休息調用,並且要去python做休息調用過程。當我試圖調用rest並在json formate中傳遞params時,我認爲它可能不會將此作爲json數據傳遞。 我的Ajax調用以下:如何通過params作爲json在ajax中調用ruby?

get '/cnet' do 
    temp="mynet" 
    url = URI.parse('http://192.168.1.9:8080/v2.0/networks') 
    params = {'net_name'=>temp}.to_json 
    resp = Net::HTTP.post_form(url, params) 
    resp_text = resp.body 
    puts resp_text  
    erb resp_text 
end 

的Python代碼如下:

@app.route('/v2.0/networks',methods=['POST']) 
def net_create(): 
    net_res=request.json 
    print "=======================" 
    print net_res['net_name'] 
    print "=======================" 
    net_name=net_res['net_name'] 

當我試圖以下錯誤讀取從蟒蛇其捐贈JSON數據:

File "/network-ui/neutron_plugin.py", line 226, in net_create 
    net_name=net_res['net_name'] 
TypeError: 'NoneType' object has no attribute '__getitem__' 

我不不知道到底發生了什麼。

我下面有鏈接,AJAX調用後: http://rest.elkstein.org/2008/02/using-rest-in-ruby.html http://developer.yahoo.com/ruby/ruby-rest.html

任何幫助非常讚賞。謝謝

+0

您發佈了Ruby代碼,但您的問題是關於Python錯誤?發佈Python代碼。 – Blender

+0

謝謝攪拌機。現在你可以在python代碼中看到編輯後的文章 –

+0

'params'是Sinatra的一個輔助方法,所以最好不要將它用作變量名。 – iain

回答

0

不要將JSON傳遞到Net::HTTP。該方法需要一個簡單的紅寶石哈希。

實際上,您發送POST PARAMS - POST PARAMS通過HTTP請求正文發送,它們不是JSON或任何,只是簡單的字符串。這是HTTP基礎知識,所以我建議你read a bit關於這個協議是如何工作的,如果你理解它會容易得多。

關於python方面,我不知道太多的Python,但如果你真的需要JSON(我懷疑),你將不得不解析PARAMS。

+0

雅我必須作爲字符串而不是json傳遞。謝謝。回答下面的鏈接:http://stackoverflow.com/questions/19466029/how-to-pass-data-in-json-format-to-do-an-ajax-post-call-in-ruby –

相關問題