0

変数を渡すとき、すべてが私の ajax コードでうまくいっています。「hello world」と言ってみましょう。しかし、「hello world http://www.facebook.com」などを含む変数を渡すと、実際には多くの問題が発生します。

実際に私が問題を抱えている変数「new_textarea」です。物事を明確にするために、

var new_textarea = "hello world"; //successfully saves it to database

でもいつ

var new_textarea = "http://www.facebook.com" // will lead to problems

これは私のajaxコードです:

$.ajax({
url: '/learns/quickpostcomment/'+user_discussion_id+'/'+user_id+'/'+new_textarea+'/'+parent_id,
success: function(data){
}});

そして、これは私のcakephpです:

public function quickpostcomment()
{
    $post = $this->params['pass'];
    $this->ClassroomComment->create();
    $this->ClassroomComment->set('classroom_id', $post[0]);
    $this->ClassroomComment->set('user_id', $post[1]);
    $this->ClassroomComment->set('comment', $post[2]);
    $this->ClassroomComment->set('parent_id', $post[3]);
    $this->ClassroomComment->save();
    die;
}

これまでのところ、変数にURLが含まれている場合、問題を引き起こしているのは変数の「/」またはスラッシュであるということだけを調べました。

スラッシュまたは URL を含む ajax に変数を渡す方法はありますか? 私はひどく助けが必要です:(

4

2 に答える 2

2

GETの代わりにAjaxでPOSTリクエストを送信する必要があると思います。投稿されたデータを正しく作成すると、標準のCakeフォームからデータを取得するときに、イベントでそれらをアクションに取り込むことができます。

jQuery.ajax({   
    url     : "<?php echo Router::url(array('controller' => 'learns', 'action' => 'quickpostcomment'), true); ?>,
    type    : "POST",
    cache   : false,
    data    : "data[ClassroomComment][user_discussion_id]=" + user_discussion_id + "&data[ClassroomComment][user_id]=" + user_id + "&data[ClassroomComment][new_textarea]=" + new_textarea + "&data[ClassroomComment][parent_id]=" + parent_id,
    success : function(data){

    }
};

投稿されたデータは、コントローラーで次の場所で利用できるようになります。

$this->request->data['ClassroomComment']
于 2012-11-15T15:37:38.860 に答える
2

encodeURIComponent()variable の周りで使用してみてくださいnew_textarea。との使用の詳細については、この回答を参照してください。encodeURI()encodeURIComponent

アクションでは、 でurldecode()関数quickpostcomment()を使用する必要がある場合があります。Cake がこれを自動的に行ったかどうかは覚えていませんが、そうではないかと思います。$post[2]

于 2012-11-15T15:28:02.260 に答える