Ajax不断返回调用页面

时间:2012-11-08 22:44:26

标签: php ajax cakephp

每当我更改输入字段时,我都会调用此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文件中(Posts Controller的视图)。被调用的函数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;
}

我要做的是将selectImage div中的现有元素替换为新元素。问题是,ajax不断返回add.ctp文件的全部内容(调用请求的文件)。

这可能是什么原因以及如何解决?

修改已解决

$这 - > Auth->允许(阵列( 'set_post_images'));没有设置,所以响应返回整个页面。在确定可以采取行动之后。

此外,在控制器中,变量不是通过$ url访问,而是通过$ this-> data ['url']访问。

快乐的编码!

3 个答案:

答案 0 :(得分:1)

$这 - > Auth->允许(阵列( 'set_post_images'));没有设置,所以响应返回整个页面。在确定可以采取行动之后。

此外,在控制器中,变量不是通过$ url访问,而是通过$ this-> data ['url']访问。

快乐的编码!

答案 1 :(得分: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;
}

答案 2 :(得分:-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
});

}

干杯