2012-02-09 9 views
1

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

Контроллер:

public function updateAction() 
{ 
    $query="my query" 

    if(mysql_query($query)) 
    { 
     echo "Your changes have been saved successfully"; 

     $customer=Customer::getDetails($_POST['cust_id']); 

     include('application/view/admin/customer/_view.php'); 
    } 
    else 
    { 
     echo "There was a problem saving your changes"; 
    } 
} 

Вид:

$('#update-customer-form').submit(function(){ 
    $.ajax({ 
     url: 'admin/customer/update', 
     type: 'POST', 
     data: $(this).serialize(), 
     success: function(result){ 
      alert(result); 
      $('#details').html(result); 
     } 
    }); 

    return false; 
}); 

То, что я хочу сделать, это передать сообщение об успехе, а также вывод HTML из файла _view.php, если запись будет сохранена успешно. В противном случае отображается только сообщение об ошибке. Как я могу это сделать?

EDIT: Есть ли способ сделать это, кроме использования json_encode()? Проблема, с которой я сталкиваюсь, включает файл PHP в json_encode().

+0

Что он делает прямо сейчас? ваш код jQuery выглядит неплохо, за исключением того, что вам не нужен обратный вызов ошибки. 'error: function (...) {...}' –

+0

На данный момент предупреждение выводит вывод HTML. – GSTAR

+0

, а затем после предупреждения html добавляется к элементу '# details'? –

ответ

2

Возвращает объект JSON с двумя атрибутами:

{ "success": "true", "markup":"<div>markup goes here</div>" } 

Помните кодировать кавычки в разметке.

success: function(result){ 
     if (result.success=='true') { 
      $('#details').html(result.markup); 
     } 
    } 
+0

Cheers. Как закодировать кавычки в разметке? – GSTAR

+1

+1. Возвращение json или xml - разумный вариант. @GSTAR метод php, который вы ищете, - это [json_encode()] (http://php.net/manual/en/function.json-encode.php) – CBusBus

+0

Приветствия. Как разместить оператор 'include()' в json_encode()? – GSTAR