JQuery AJAX - получить несколько данных - PullRequest
0 голосов
/ 03 марта 2011

Я использую Wordpress, PHP, jQuery и AJAX.

Я могу получить данные из PHP через вызов AJAX, например:

$.ajax({
    type: "POST",
    url: "<?php echo get_bloginfo('url'); ?>/?addmod_ajax=1",
    data: "action=load&type=part",
    success: function(data){
        alert(data);
    }
});

Когда я получу данные, я также хочу знать, как все прошло. «Данные» содержат HTML, и мне также нужны коды ошибок, такие как «success» или «not-found».

Как мне решить это наилучшим образом?

* 1011 Wordpress *

Поскольку я использую Wordpress, мне нужно вызвать триггер AJAX (в URL). Если бы я мог сохранить это в неприкосновенности, было бы неплохо.

Ответы [ 2 ]

1 голос
/ 03 марта 2011
$.ajax({
    type: "POST",
    url: "<?php echo get_bloginfo('url'); ?>/?addmod_ajax=1",
    data: "action=load&type=part",
    success: function(data){
        alert(data);
    },
    failure: function(){
        alert('failed');
    }
});

Вы можете добавить обработчик ошибок, чтобы увидеть, если запрос ajax не выполнен, но, кроме этого, если вы хотите получить другое возвращаемое значение, вам придется изменить результат функции, которую вы вызываете в бэкэнде, или создать новая аналогичная функция, которая вместо простого возврата html возвращает закодированный в json массив с первым найденным или не найденным элементом, а вторым элементом является html.

Редактировать: добавленный комментарий к полному коду ответа и формату.

в том месте, где вы повторяете «ваш результат», вместо этого вы можете повторить

json_encode(array('success'=>true,'html'=>$yourData)); 

и в свой вызов ajax добавьте

 dataType:'json'

тогда вы можете получить доступ к html-значениям и значению успеха в вашем обработчике успеха.

0 голосов
/ 03 марта 2011

Я обычно просто возвращаю массив или dict с одним значением, обозначенным как состояние.

$.get(url,data,function(data) {
    if (data[0]=='parseError') { //could also be data.state
         $("#formError").html("You have entered an invalid value.").show();
    }
    else if (data[0]=='permissionDenied') {
        $("#formError").html("You do not have permission to edit this.").show();
    }
    else {
        $("#formSuccess").html("Your changes have been saved");
    }
});

Эти примеры могут быть не самыми лучшими (отказано в разрешении, и ошибки синтаксического анализа могут обрабатываться на переднем конце). Тем не менее концепция является твердой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...