2014-01-26 2 views
0

Мои самые скромные извинения, если это было задано раньше. У меня был трал, и я не могу найти то, что ищу.Возвращаемое значение на страницу ошибки ajax

Я сериализую форму для отправки на php-страницу через ajax для включения в базу данных.

У меня есть функции успеха и ошибки. Когда это было просто успешно, оно возвращало все к моей ошибке div (как я и ожидал).

Как я уже сказал, теперь у меня есть функция ошибки, и она возвращает ошибку, но она не делает то, что я бы хотел.

Хотелось бы, чтобы это был успех - шоу в успех div, ошибка - показать по ошибке div. Прямо сейчас, он показывает это ни в одном div вообще без стиля, и это, кажется, только делает все, что находится в функции успеха.

Я предполагаю, что мне не хватает чего-то простого. Любая помощь будет оценена по достоинству.

Код, который у меня есть, приведен ниже.

$("#insert").click(function() 
{ 
    var formstuff = $('#person-data').serialize(); 
    $.ajax(
     { 
      url: 'insert.php', 
      type: "POST", 
      data: formstuff, 
      success: function(data) 
       { 
        $('#error').hide(); 
        $('#error').html(''); 
        $('#success').append(data); 
        $('#success').fadeIn(1500); 
        $("#person-data")[0].reset(); 
        $('#username').css('border', 'none'); 
        $('#username').css('background-color', '#FFF'); 
        $('#username').css('color', '#000'); 
        $('#username').css('background-image', 'url(images/txtbox/id.png)'); 
       }, 
      error: function(data) 
       { 
        $("#error").append(data); 
        $("#error").fadeIn(1500); 
       } 
     } 
    ); 
    return false; 
}); 

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

+0

Что касается проблем с дизайном, можете ли вы разместить свой HTML для '# success' и других элементов, которые вы ссылаетесь на свою функцию успеха? Что касается ', похоже, просто делает то, что находится в функции успеха '- функция ** success ** AJAX не означает, что скрипт PHP выполнен так, как вы ожидаете, он просто ссылается на то, является ли запрос ** ** к этому сценарию удалось (обработчик ошибок будет запущен, если, например, целевой URL не существует) –

+0

@scrowler это то, что возвращается из базы данных при вводе записи (с правильным форматированием PHP в файле, конечно) : $ firstname $ lastname
$ address1
[$ email1]
подано под $ cat
Было успешно введено в базу данных по адресу $ Time on $ Date Я бы хотел, чтобы возвращаемые ошибки (скажем, когда есть дублирующаяся запись) ошибка div. Я понимаю, что вы имеете в виду - я думаю, что любой ответ от скрипта PHP считается успешным ответом на ajax. Итак, есть ли способ дифференцировать PHP-сторону вообще, так что она идет в правом div? – Chris

+0

Самый простой способ отличить успех/неудачу PHP - это «echo» success »;' или 'echo 'failed';' - но я обычно повторяю объект результата json_encode'd, задавая 'dataType: 'JSON'' в мой AJAX вызов и искать этот –

ответ

1

error свойство функции JQuery .ajax фактически принимает функцию с тремя параметрами:

Type: Function(jqXHR jqXHR, String textStatus, String errorThrown) A function to be called if the request fails. The function receives three arguments: The jqXHR (in jQuery 1.4.x, XMLHttpRequest) object, a string describing the type of error that occurred and an optional exception object, if one occurred. Possible values for the second argument (besides null) are "timeout", "error", "abort", and "parsererror". When an HTTP error occurs, errorThrown receives the textual portion of the HTTP status, such as "Not Found" or "Internal Server Error." As of jQuery 1.5, the error setting can accept an array of functions. Each function will be called in turn. Note: This handler is not called for cross-domain script and cross-domain JSONP requests. This is an Ajax Event.

Ваша функция определяет только один параметр, data. Поступая таким образом, вы пытаетесь записать объект jqXHR в свой div. Вместо этого вы должны написать errorThrown.

Если вы хотите обрабатывать сообщения об ошибках через функцию ошибки, то ваш код сервера backend (в данном случае PHP) должен установить код состояния HTTP на значение, отличное от 200. В вашем сценарии должно быть указано, что произошла ошибка. Возможно, используйте статус 500. Вы можете установить статус HTTP в PHP, используя http-response-code.

+0

Итак, в моем PHP скрипт я следующий если { \t умереть ("Ошибка:" (mysql_query ($ sqlp, $ сопп)!). mysql_error() ".."); \t эхо "Ошибка:". Mysql_error()." "; } еще { \t эхо" $ Firstname $ Lastname
«; } ли я просто поставить статус HTTP в случае. (! mysql_query()) У меня есть 5 из них, так как он помещает данные в 5 разных таблиц. Как вы можете сказать, я новичок в ajax и jquery – Chris

+0

Да, вы бы установили http-response-code в выражении if. Тем не менее, мне больше нравится решение @ scrowler, которое должно возвращать данные JSON, указывающие, что вставки преуспели или не удались. –

+0

Мне нужно будет иметь ok в решении @scrowlers. Маленькие кусочки за раз. Не нужно перегружать мозг. ЛОЛ. Спасибо за ваше решение, хотя – Chris

Смежные вопросы