2013-01-10 40 views
1

我試圖從一個視圖發送未對象到控制器(web2py的)以同樣的方式是:發送目的是在web2py中功能控制器

How to pass a JSON object to web2py using JQuery Ajax

AJAX的部分是:

var testObject = {}; 
testObject.value1 = "value1value!"; 
testObject.value2 = "value2value!"; 

var DTO = { 'testObject' : testObject }; 

var data = $.toJSON(DTO); //Using the toJSON plugin by Mark Gibson 

$.ajax({ 
    type: 'POST', 
    url: '/Myapplication/controllers/jsontest.json', 
    contentType: "application/json; charset=utf-8", 
    data: data, 
    dataType: 'json', 
success: function(data){ alert('yay'); } 
}); 

和功能jsontest是/Myapplication/controllers/default.py我

def jsontest(): 
    import gluon.contrib.simplejson 
    data = gluon.contrib.simplejson.loads(request.body.read()) 
    return dict() 

做同樣的測試我有一個很好的字符串中var data = $.toJSON(DTO);。我得到了json.js在https://sites.google.com/site/jollytoad/json.js?attredirects=0

但沒有什麼是transmited到jsontest功能。任何人都可以解釋我什麼是錯的?我的事情我的網址可能是壞...等感謝您的回答...

回答

2
url: '/Myapplication/controllers/jsontest.json' 

以上是不是一個有效的web2py URL(「控制器」是保存控制器文件的文件夾的名稱,但它不會出現在URL中)。正確的URL是:

url: '/Myapplication/default/jsontest.json' 

如果Javascript也是在一個的web2py視圖文件(而不是單獨的js文件),那麼生成的URL的優選方法是通過URL()功能:

url: '{{=URL('default', 'jsontest.json')}}' 

有關更多詳細信息,請參閱有關dispatchingURL() function的書籍部分。

請注意,您的代碼假定存在/views/default/jsontest.json視圖文件或您已啓用generic.json視圖(有關更多詳細信息,請參見here)。但是,jsontest()函數實際上並不會將任何內容返回給視圖,也不會對JSON數據執行任何操作。

+0

嗨,謝謝,現在的網址是正確的。我已經在jsontext中添加了數據之後的下一個代碼:myfile = os.path.join(request.folder,'static','file.txt') f = open(myfile,「w」) f.write ) f.close()。 file.txt已創建,但文件內沒有任何內容......您有解釋嗎? – anraT