2013-09-17 6 views
0

Я работаю над ZEND Framework, который является новым для меня, и то же самое происходит с AJAX. Я пробовал много примеров, но не работает.

Скажите, пожалуйста, я ошибаюсь в этом коде.

home.phtml

<select name="year" onchange="saveChanges(this);"> 
            <option value="najam">Najam</option> 
            <option value="Ali">Ali</option> 
            <option value="Hassan">Hassan</option> 
            <option value="Hassam">Hassam</option> 

           </select> 
           <script type="text/javascript"> 
            function saveChanges(object){ 
    $.ajax({ 
     method :'POST', 
     url: 'home', 
     data: object.value, 
     cache: false, 
     error: function(e){ 
      alert(e); 
      console.log("error" + e); 
     }, 
     success: function(response){ 
      // A response to say if it's updated or not 
      alert("Success" + object.value); 
      console.log("Success"); 
     } 
    }); 
} 
           </script> 

HomeAction

if($this->_request->isXmlHttpRequest()){ 
//do this 
} 
else { 
//do this 
// It always in the else Part. 

}

Хотя печать успеха сообщения на консоли, а также на предупредительном сообщении JavaScript.

Помоги мне, если я ошибаюсь с этим кодом

ответ

1
method :'POST' 

до

type: "POST" 

Я всегда использую $this->_request->isXmlHttpRequest(), чтобы обнаружить запрос ajax и всегда работать.

К сожалению я не говорить по-английски хорошо

Update:

Контроллер:

final class IndexController extends Zend_Controller_Action 
{ 
    final public function indexAction(){ 
     if($this->_request->isXmlHttpRequest()){ 
      header('Content-type: application/json;charset=UTF-8'); 
      exit(json_encode(($this->_request->getPost()))); 
     } 
    }  
} 

Вид:

      <select id="year" name="year"> 
           <option value="najam">Najam</option> 
           <option value="Ali">Ali</option> 
           <option value="Hassan">Hassan</option> 
           <option value="Hassam">Hassam</option> 
          </select> 
          <script type="text/javascript"> 
           $(function(){ 
            $("#year").change(function(){ 
             var _this = $(this); 
             $.ajax({ 
              type :'POST', 
              url: "", // empty string means current URL 
              data: {year: _this.attr("value")}, 
              dataType: 'json', 
              cache: false, 
              error: function(e){ 
               console.log(e); 
              }, 
              success: function(response){ 
               console.log(response); 
              } 
             }); 
            }); 
           }); 
          </script> 

Вот исходный код:

http://www.mediafire.com/?hvv4830macfl0wm

Надеюсь, помощь!

+0

Я попробовал 'type:" POST ", но это не работает ... Просьба помочь мне найти простейший и очень простой пример использования ajax с zend, поскольку я не могу найти это ... –

+0

Можете ли вы сделайте мне одолжение ... Можете ли вы написать простой учебник, который сделает этот эффект ... http://www.tradingeconomics.com/pakistan/gdp ... Буду благодарен вам ..... –

+0

у меня есть обновил мой пост. –

0

В Zend Framework вы можете добавить ContextSwitch к вашим действиям. На основе контекста действие будет отображено в соответствующем шаблоне.

например.

public function init() 
    { 
     $contextSwitch = $this->_helper->getHelper('contextSwitch'); 
     $contextSwitch->addActionContext('list', 'xml') 
         ->initContext(); 
    } 

В вашем случае

$contextSwitch->addActionContext('home', 'ajax') 

Смотрите здесь http://framework.zend.com/manual/1.8/en/zend.controller.actionhelpers.html

Edit: Это для ZF1, хотя, если вы используете ZF2 вы можете посмотреть в View Strategy http://framework.zend.com/manual/2.0/en/modules/zend.view.quick-start.html#creating-and-registering-alternate-rendering-and-response-strategies

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