【问题标题】:include cakePHP element on ajax success在 ajax 成功中包含 cakePHP 元素
【发布时间】:2012-02-07 23:38:46
【问题描述】:

我有一个 javascript 代码,它向 URL 发出 Ajax 请求,并在成功时(在成功回调中)调用 cakePHP 元素,如下所示:

$.ajax({
    type: 'POST',
    url: "the_url_where_the_request_should_go",
    success: function(data) {
        "<?php echo $this->element('the_path_to_my_element'); ?>";
    }
});

如您所见,因为我使用的是 javascript 代码,所以我必须在我的 PHP 标记周围加上双引号 ("") 才能正常工作。我遇到的问题是,在成功函数中,当我调用我的元素时,会发送双引号。意思是,如果我的元素文件中的代码是例如:

<div>element_code_here</div>

我明白了:

"<div>element_code_here</div>" (notice the double quotes gets included also)

有人知道它为什么会这样吗?我该如何解决这个问题?

顺便说一句,如果我只是删除我的 PHP 标记周围的双引号,它就不起作用(它给我一个 javascript Invalid Identifier 错误消息。

提前致谢

【问题讨论】:

  • 还在为这个而苦恼吗?

标签: php javascript jquery jquery-ui cakephp


【解决方案1】:

成功回调仍然是一个 javascript 函数,因此您需要将使用 PHP 回显的元素视为字符串。我不是 100% 确定您要完成什么,我可能会建议从您的 ajax 端点返回元素(html),而不是将其直接插入到脚本中,但使用您的示例,您应该执行以下操作:

$.ajax({
    type: 'POST',
    url: "the_url_where_the_request_should_go",
    success: function(data) {
        var html_string = "<?php echo $this->element('the_path_to_my_element'); ?>";
        //do something with the html string.. like insert it into a waiting div
        $('div.container').html(html_string);
    }
});

【讨论】:

    【解决方案2】:

    猜测。尝试从服务器返回元素,如下所示:

    //Function to call with $.ajax
    
    function giveElement($elementName){
    
        //logic to do with POST
    
    
        //element to return
        $this->render('/elements/'.$elementName);
    
    
    }
    //NOT TESTED. This might need something else too.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多