0

入力フィールドを変更するたびに呼び出されるこのajaxリクエストがあります。

$(document).ready(function(){
    $('#PostTitle').change(function(){
        var inputstring=$("#PostTitle").val();
        submitData(inputstring);
    });
});

function submitData(inputstring){
$.ajax({
        type: 'POST',
        url: '/myWebsite/posts/set_post_images',
        data: inputstring,
        dataType: "text",
        success:function(data){
            $("#selectImage").replaceWith($('#selectImage', $(data)));
        },
        error:function(){
            $('#selectImage').html("You failed misserably.");
        },
        timeout: 5000
    });
}

上記のコードは、add.ctpファイル(投稿コントローラーのビュー)にあります。呼び出された関数set_post_imagesは、Posts Controller自体にあり、次のようになります。

public function set_post_images($url = null) {
    if($url!=null){
        $this->set('imageArray', $this->getImages($url));
    } else {
        $this->set('imageArray', array("/img/someImage.png"));
    }
    if ($this->RequestHandler->isAjax()) {
         $this->autoRender = false;
         $this->layout = 'ajax';
         $this->render('/elements/selectImageElement');
    }
    return;
}

私がやろうとしているのは、selectImagedivから既存の要素を新しい要素に置き換えることです。問題は、ajaxがadd.ctpファイル(リクエストの呼び出し元のファイル)の内容全体を返し続けることです。

これの原因は何であり、どうすれば修正できますか?

編集解決済み

$ this-> Auth-> allow(array('set_post_images')); が設定されていなかったため、応答はページ全体を返していました。それを修正した後、アクションを話すことができます。

また、コントローラーでは、変数は$ urlを介してではなく、$ this->data['url']を介してアクセスされます。

ハッピーコーディング!

4

3 に答える 3

1

$ this-> Auth-> allow(array('set_post_images')); が設定されていなかったため、応答はページ全体を返していました。それを修正した後、アクションを話すことができます。

また、コントローラーでは、変数は$ urlを介してではなく、$ this->data['url']を介してアクセスされます。

ハッピーコーディング!

于 2012-11-09T10:28:47.350 に答える
0

次のコードで試してください、

public function set_post_images($url = null) {
    if($url!=null){
        $this->set('imageArray', $this->getImages($url));
    } else {
        $this->set('imageArray', array("/img/someImage.png"));
    }
    if ($this->RequestHandler->isAjax()) {
         $this->autoRender = false;
         $this->layout = 'ajax';
         $this->render('/elements/selectImageElement');
    }
    exit;
}
于 2012-11-15T07:26:03.897 に答える
-1

set_post_imagesのリターンをid'returned-images'のdivに挿入してから、ajaxコードをこれに変更してください

function submitData(inputstring){
$.ajax({
    type: 'POST',
    url: '/myWebsite/posts/set_post_images',
    data: inputstring,
    dataType: "text",
    success:function(data){
        var images = data.find('#returned-images');
        var getResults=images.html();
        $("#selectImage").html(getResults);
    },
    error:function(){
        $('#selectImage').html("You failed misserably.");
    },
    timeout: 5000
});

}

乾杯

于 2012-11-09T00:31:29.913 に答える