как использовать JSON для класса ошибок - PullRequest
1 голос
/ 22 мая 2009

Привет всем. Мне повезло, что Паоло помог мне с куском кода jquery, который бы показывал конечному пользователю сообщение об ошибке, если данные были сохранены или не сохранены в базе данных. Я смотрю на код, и мое воображение становится диким, потому что мне интересно, смогу ли я использовать только этот кусок кода и импортировать в него тип селектора, а затем включить весь этот сценарий json в мой документ. Это избавило бы меня от необходимости включать сценарий json в 10 различных документов. Надеюсь, я здесь понял.

$('#add_customer_form').submit(function() { // handle form submit

Идентификатор "add_customer_form" - это то, что я хотел бы изменить для каждой страницы. Если бы я мог успешно это сделать, то я мог бы создать какой-то класс, который бы просто использовал оставшуюся часть этого json-скрипта и включал его там, где он мне был нужен. Я уверен, что кто-то уже думал об этом, поэтому мне было интересно, кто-нибудь может дать мне несколько указателей.

Спасибо!


Ну, я, так сказать, ударил стену. Код ниже - это код, который уже есть в моей форме. Это использует тип данных строки данных, но мне нужен JSON. Что я должен делать? Я хочу заменить глупое окно с предупреждением красивым зеленым блоком шириной 100%, где мой сервер говорит, что все в порядке.

$.ajax({
  type: "POST",
  url: "body.php?action=admCustomer",
  data: dataString,
  success: function(){
    $('#contact input[type=text]').val('');
    alert( "Success! Data Saved");
  }
 });

Ответы [ 2 ]

2 голосов
/ 22 мая 2009

Исходя из вашего вопроса, я думаю, что вам нужен селектор jQuery, который выберет правильную форму на каждой из ваших страниц. Если бы вы дали им всем непротиворечивый класс, вы могли бы использовать один и тот же код на каждой странице:

HTML

<form id="some_form_name" class="AJAX_form"> ... </form>

Селектор:

$('form.AJAX_form")
2 голосов
/ 22 мая 2009

Вот код, который я использовал в последнем вопросе , минус комментарии:

$(function() {
    $('#add_customer_form').submit(function() {
        var data = $(this).serialize();
        var url = $(this).attr('action');
        var method = $(this).attr('method');
        $.ajax({
            url: url,
            type: method,
            data: data,
            dataType: 'json',
            success: function(data) {
                var $div = $('<div>').attr('id', 'message').html(data.message);
                if(data.success == 0) {
                    $div.addClass('error');
                } else {
                    $div.addClass('success');
                }
                $('body').append($div);
            }
        });
        return false;
    });
});

Если я прав, то, по сути, вы спрашиваете, как заставить этот фрагмент кода работать для нескольких форм, не редактируя селектор. Это очень просто. Если у вас есть код, указанный выше, на каждой странице формы, вы можете изменить часть $('#add_customer_form') на что-то вроде $('form.json_response'). С помощью этого селектора мы в основном говорим jQuery «любая форма с классом json_response должна обрабатываться с помощью этой функции отправки» - конкретный класс, который я использую, здесь не важен, дело в том, что вы используете класс и передаете его все формы, которые должны иметь функциональность. Помните, jQuery работает с наборами объектов. То, как я изначально это делал, набор оказался 1 элементом, но каждая функция jQuery предназначена для воздействия на столько элементов, сколько ей нужно. Таким образом, всякий раз, когда вы создаете форму, которую хотите обработать с помощью AJAX (и вы знаете, что сервер вернет ответ JSON с индикатором успеха), вы можете просто добавить любой класс, который вы выберете, и код jQuery возьмет на себя и обработает его вы.

Существует также плагин для очистки , который вроде этого делает это, но выше тоже хорошо.

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