включить элемент cakePHP в успех ajax - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть код javascript, который отправляет Ajax-запрос к URL-адресу, и в случае успеха (при обратном вызове success) вызывает элемент 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.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Дикая догадка. Попробуйте вернуть элемент с сервера примерно так:

//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.
0 голосов
/ 08 февраля 2012

Обратный вызов успеха по-прежнему является функцией javascript, поэтому вам нужно рассматривать элемент, который вы отображаете в PHP, как строку.Я не уверен на 100%, что вы пытаетесь достичь, и я, вероятно, предложил бы вернуть элемент (html) из вашей конечной точки ajax вместо того, чтобы интерполировать его непосредственно в сценарий, но, используя ваш пример, вы должны сделать что-то вроде этого:

$.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);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...