0

何秒も経つと、フォームがデータベースに自動的に保存されるフォームがあります(これが私の意図です)

以下のスクリプトは、jQuery AJAXリクエストの値を取得し、これをコントローラーに送信します。ただし、値をvar_dumpしようとすると、シリアル化された配列からは機能しないようです。FirefoxでFireBugを表示すると、パラメーターが表示されますが、配列を出力できないようです。理由を説明できる人はいますか?

// view logic
var t = setTimeout("autosave()", 10000); 
$.ajax( 
{ 
    type: "GET", 
    url: "/questionnaires/autosave", 
    data: $("form").serialize(), 
    cache: false, 
    success: function(msg) {
        return false;
    }
});

// controller logic
function autosave()
{
    $str = parse_str( $this->input->get_post('form') );
    var_dump($str); // intend to do an insert query here to the db
}
4

1 に答える 1

0

ほとんどの場合query_string、config.php で有効にしていません。

GETその結果、確実に使用することができなくなります。type: "GET",に変更することをお勧めしますtype: "POST",

次に$this->input->post()、ポスト変数にアクセスするために使用します。この情報は、Codeigniter のドキュメントから参照できます。

http://codeigniter.com/user_guide/libraries/input.html

$this->input->post()

最初のパラメーターには、探している POST アイテムの名前が含まれます。

$this->input->post('some_data'); The function returns FALSE (boolean)

取得しようとしているアイテムが存在しない場合。

2 番目の省略可能なパラメーターを使用すると、XSS フィルターを介してデータを実行できます。2 番目のパラメーターをブール値の TRUE に設定することで有効になります。

$this->input->post('some_data', TRUE); To return an array of all POST

items はパラメーターなしで呼び出します。

すべての POST アイテムを返し、XSS フィルターを通過させるには、最初のパラメーターを NULL に設定し、2 番目のパラメーターをブール値に設定します。

POST に項目がない場合、関数は FALSE (ブール値) を返します。

$this->input->post(NULL, TRUE); // returns all POST items with XSS
$this->input->post(); // returns all POST items without XSS
于 2012-07-23T16:18:28.113 に答える