Ошибка при получении вызова ajax jQuery приложения Zend

#zend-framework #jquery

#zend-framework #jquery

Вопрос:

Я пытаюсь работать с jQuery в Zend Framework. И вариант использования, с которым я сталкиваюсь, заключается в том, что я пытаюсь сохранить данные в БД. Всегда выдает ошибку ajax, хотя данные сохраняются в базе данных.

Контроллер, который я использую для добавления данных, выглядит следующим образом:

 public function addAction()
{
    // action body
    $form = new Application_Form_Costs();
    $form->submit->setLabel('Add');
    $this->view->form = $form;

    if($this->getRequest()->isPost())
    {
        $formData = $this->getRequest()->getPost();
        {
            if ($form->isValid($formData))
            {
                $costTitle = $this->_request->getPost('costTitle');

                 $costAmount = $this->_request->getPost('costAmount');

                $costs  = new Application_Model_DbTable_Costs();

                if($costs->addCosts($costTitle, $costAmount))
                {
                    echo "suces";
                }

               // $this->_helper->redirector('index');
            }
            else
            {
                $form->populate($formData);  
            }
        }
    }
}
  

И jQuery, который передает данные, выглядит следующим образом:

   $('#cost').submit(function (){
      data = {
      "cost_title":"cost_title",
      "cost_amount":"cost_amount"
  };

  $.ajax({
            dataType: 'json',
            url: '/index/add',
            type: 'POST',
            data: data,

            success: function (response) {
             alert(response);
            },

            timeout: 13*60*1000,
            error: function(){
                alert("error!");
            }
        });
  });
  

Я всегда получаю ошибку.

В чем проблема в этом коде?

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

Комментарии:

1. Проверьте ajax-запрос в firebug… Является ли ответ действительным в формате JSON? jsonlint.com

2. Получение всего js в качестве ответа!

3. Можете ли вы вставить полученную ошибку?

4. вставка данных выполнена успешно, она должна быть успешной: но происходит ошибка: .где я получаю установленное мной предупреждение об ошибке (посмотрите на мой js-код)

Ответ №1:

Я бы настоятельно рекомендовал вам внедрить новейшие методы Zend / AJAX.

 // Inside your php controller
public function init()
{
    $ajaxContext = $this->_helper->getHelper('AjaxContext');
    $ajaxContext->addActionContext('add', 'json')
                ->initContext();
}

public function addAction()
{
// action body

$form = new Application_Form_Costs();
$form->submit->setLabel('Add');
$this->view->form = $form;

if($this->getRequest()->isPost())
{
    $formData = $this->getRequest()->getPost();
    {
        if ($form->isValid($formData))
        {
            $costTitle = $this->_request->getPost('costTitle');
            $costAmount = $this->_request->getPost('costAmount');
            $costs  = new Application_Model_DbTable_Costs();
            if($costs->addCosts($costTitle, $costAmount))
            {
                // The view variables are returned as JSON.
                $this->view->success = "success";
            }
        }
        else
          {
          $form->populate($formData);  
        }
    }
}

// Inside your javascript file
// Assign handlers immediately after making the request,
  // and remember the jqxhr object for this request
  var jqxhr = $.get("/index/add/format/json", function(data) {
    alert(data);
  })
  .error(function() { alert("error"); });
  

Для получения дополнительной информации:

AjaxContext (ctrl f)

jQuery.get()

Ответ №2:

Я думаю, вы получаете ошибку при выводе сеанса. Почему бы вам не отключить средство визуализации, поскольку вам просто нужен ответ на запрос echo "suces" , которого более чем достаточно для вашего AJAX.

Комментарии:

1. Поскольку единственная проблема, которую я здесь вижу, это вероятность печати макетов / сценариев просмотра. Вы поставили exit; сразу после сообщения об успешном завершении? У вас где-нибудь есть рабочий пример?