Как использовать / комбинировать 2 скрипта jquery, которые используют два разных типа данных - PullRequest
0 голосов
/ 22 мая 2009

Томас помог мне в этой проблеме, и я думаю, что мы добились определенного прогресса. Вот модифицированный код. Для этого нужно сначала взять строку запроса и передать ее на сервер, где данные анализируются и вставляются в базу данных. Когда метод класса возвращает успех, функция JQ должна повторить 100% стиль CSS css (id = message) с сообщением от сервера. Он также может вернуть сообщение об ошибке. Это сообщение импортируется ?? с JSON. Я вижу сообщение в консоли FF, но не вижу его в браузере.

Другая проблема, с которой я сталкиваюсь, заключается в том, что к каждому div на странице добавляется сообщение id =.

EDIT:

$.ajax({
    type: "POST",
    url: "body.php?action=admCust",
    data: dataString,
    success: function(data){
        $('#admCust input[type=text]').val('');
        var div = $('<div>').attr('id', 'message').html(data.message);
        if(data.success == 0) {
            $(div).addClass('error');
        } else {
            $(div).addClass('success');
        }
        $('body').append(div);
        $(div).show();
      }
});
return false;

Ответы [ 2 ]

0 голосов
/ 23 мая 2009

Попробуйте этот код (так как он имеет return false; в конце, я предполагаю, что это внутри функции отправки или чего-то еще, а dataString заполняется откуда-то еще ....):

$.ajax({
    type: "POST",
    url: "body.php?action=admCust",
    data: dataString,
    dataType: 'json',
    success: function(data){
        $('#admCust input[type=text]').val('');
        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;

Ваша самая большая ошибка состояла в том, что вы забыли указать dataType (что у меня было в моем примере ...), поэтому jQuery не знал, в каком формате будет возвращаться сервер. Он просто предполагал, что это была строка вместо объекта JSON, поэтому ваша переменная data не была заполнена правильно. Вам также не нужно show(), так как добавление достаточно.

Я проверил вышеупомянутое, и оно работает, предполагая, опять же, dataString заполняется в другом месте, и body.php возвращает допустимую строку JSON с сообщением и кодом успеха.

0 голосов
/ 23 мая 2009

Не уверен, что это то, что вам нужно, но, как я понимаю вашу проблему, сделайте следующее:

$(function() {
    $('.error').hide();
    $(".admCustBtn").click(function() {
        $('.error').hide();
        var admCustRPSecPhone = $("input#admCustRPSecPhone").val();
        var dataString = '&admCustRptSumm='+ admCustRptSumm + '&admCustRptDtl='+ admCustRptDtl;
        $.ajax({
            type: "POST",
            url: "index.php",
            data: dataString,

            // add an input parameter named data
            success: function(data){
                $('#admCust input[type=text]').val('');

                // remove the alert box
                // alert( "Success! Data Saved");

                // add the success handling code from the other method
                var div = $('#message').attr('id', 'message').html(data.message);
                if(data.success == 0) {
                    $(div).addClass('error');
                } else {
                    $(div).addClass('success');
                }
                $(div).show();
              }
        });
        return false;
    });
});

РЕДАКТИРОВАТЬ: переименовал $div в div и изменил селектор на 'div' с '<div>'.

EDIT2: изменил селектор (добавьте id="message" в html!), Добавил $() -обертки вокруг переменной div и изменил строку .append() на команду .show().

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