1

同じ方法で、ビューからコントローラー(Web2py)にオブジェクトを送信しようとしています:

JQuery Ajax を使用して JSON オブジェクトを web2py に渡す方法

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()

同じテストを実行すると、適切な文字列が得られました。https:var data = $.toJSON(DTO); //sites.google.com/site/jollytoad/json.js?attredirects=0 で json.js を取得しました 。

jsontest 関数には何も送信されません。誰が何が間違っているのか説明できますか? 私は私のURLが悪いかもしれないと思っています...など答えてくれてありがとう...

4

1 に答える 1

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

上記は有効な web2py URL ではありません ("controllers" はコントローラー ファイルを保持するフォルダーの名前ですが、URL には表示されません)。正しい URL は次のようになります。

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

Javascript が web2py ビュー ファイル (個別の .js ファイルではなく) にある場合、URL を生成する好ましい方法は次のURL()関数を使用することです。

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

詳細については、ディスパッチURL()機能に関する本のセクションを参照してください。

コードは、 /views/default/jsontest.json ビュー ファイルが存在するか、generic.json ビューが有効になっていることを前提としています (詳細については、こちらを参照してください)。ただし、jsontest() 関数は、実際にはビューに何も返さず、JSON データに対しても何もしません。

于 2013-01-10T16:15:44.203 に答える