0

web2py を使用して ajax を使用してデータベースのテーブルにデータを入れようとしていますが、少し助けが必要です。

これが私が使用している関数です(現在、フォームからデータが渡されるのではなく、データセクションにダミーデータがあります):

function submitData(){
    $.ajax({
        type: "POST",
        url: "requests",
        data: {
                    id: 1, 
                    user_id:111, 
                    bottle_image:'',
                    bottle_name:'JJjman',
                    bottle_description:'Lol',
                    request_creationDate:'2000-01-01',
                    request_expiryDate:'2003-08-08', 
                    request_fulfilled:false
            },
        success: function(){
            alert('Posted data');
        }
    });
}

この関数が「onclick」に接続されたhtmlボタンがありますが、現時点では、ページをリロードするだけで、データベースにデータを渡していません。成功アラートも出ています。

Firebug は、POST にはすべてのデータが含まれていると言っていますが、POST が実際にどこにでも行くかどうかはわかりません..

このデータを実際にデータベースに渡すために必要な手順がありませんか? それとも、私のデータがデータベースに適したタイプではないということでしょうか?

乾杯

4

1 に答える 1

2

データを処理してデータベースに挿入するためのコードがサーバー上にない限り、単にブラウザから投稿を送信しても、サーバー上では何も起こりません。

これを行う方法を学ぶために、の関連する部分を読むことを強くお勧めします。概要の章では、データベース テーブルのモデル化や、そのテーブルにレコードを投稿するためのフォームの作成を含むイメージ ブログの構築などの入門チュートリアルを提供します。

データベースのモデリングの詳細についてはDALの章を、SQLFORMデータベース テーブルに関連付けられたフォームの作成の詳細については のセクションを、 Ajaxを使用してフォームを投稿する方法の詳細についてはajaxコンポーネントのセクションを確認してください。

あなたが望むことをする最も簡単な方法は、次のようなものです:

/models/db.py で:

db = DAL('sqlite://storage.sqlite')

db.define_table('bottle',
    Field('user_id')
    Field('bottle_image'),
    Field('bottle_name'),
    Field('bottle_description', 'text'),
    Field('request_creationDate', 'date'),
    Field('request_expiryDate', 'date'),
    Field('request_fulfilled', 'boolean'),
    format='%(bottle_name)s')

/controllers/default.py で:

def index():
    return dict()

def add_bottle():
    return dict(form=SQLFORM(db.bottle).process())

/views/default/add_bottle.load:

{{=form}}

/views/default/index.html で:

{{extend 'layout.html'}}

{{=LOAD('default', 'add_bottle.load', ajax=True)}}

次に、/yourapp/default/index に移動すると、Ajax を介してデータベースにレコードを投稿するフォームが表示されます。

于 2013-10-23T13:02:44.840 に答える