2013-08-02 3 views
0

У меня есть jQuery ajax-вызов в моем приложении ZF2. Он просто работал раньше. Вдруг он больше не будет работать. Даже когда я помещаю несуществующее действие в запрос, он не дает серверной ошибки, как раньше. Кажется, он не делает запрос.jQuery ajax post request не работает внезапно,

В консоли нет ошибок. Все работает до тех пор, пока я не сделаю запрос. Это функция это в:

$('.expand').click(function(){ 
    var CCID = $(this).parent().attr('id'); 
    CCID = parseInt(CCID); 

    console.log(CCID);         // Works 

    if($.inArray(CCID,$expanded) > -1){ 
     foldin(CCID); 
    } else { 
     console.log('Works up to here.');    // Works 
     $.post('admin/expand', { 
      id: CCID 
     },function(data){ 
      console.log('Doesn\'t log this.');   // Doesn't work 
      if(data.hasOwnProperty('info')){  
       console.log('sup'); 
       expand(data.info); 
      } else { 
       console.log('Can\'t find customer info.'); 
      } 
     },'json'); 
    } 
}); 

Как я уже говорил, абсолютно никаких ошибок, и записывает все биты, которые я заметил, что делать. Надеюсь, я сделал глупую ошибку, и вы можете это заметить. Уже через это куча раз, не могу найти его.

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

редактировать: Ниже некоторая дополнительная информация

Поэтому я добавил обработчик отказа в просьбе комментатора, он вернулся:

failed [Object, "parseerror", SyntaxError] 

В SyntaxError он говорит: «неожиданный маркер <», но в файле .js нет ни одного файла, и я не могу найти, где он говорит мне, какую строку/файл он находит. Вероятно, это поможет.

Это действие, которое я вызываю в контроллере. Не похоже, чтобы найти его на всех, хотя:

public function expandAction(){ 
    $request = $this->getRequest(); 
    $response = $this->getResponse(); 

    if($request->isPost()){ 
     $post_data = $request->getPost(); 
     $CCID = $post_data['id']; 
     $customer = $this->getCustomerTable()->getCustomer($CCID); 
     $response->setContent(\Zend\Json\Json::encode(array(
      'info'  => $customer, 
     )));  
    } 

    return $response; 
} 
+1

Попробуйте добавить обработчик отказа и посмотреть, получится ли он '$ .post ('admin/expand', {..}, function() {}). Fail (function() {console.log (' не удалось ", аргументы)})' –

+0

Можете ли вы пояснить несколько вещей: 1) «Вдруг это больше не будет работать»: раньше это работало, что вы изменили, что вы имеете в виду «не работает»? 2) Каков запрос, который вы отправляете (проверьте инспектор в Chrome/Firefox). 3) Каков ответ, который вы возвращаете, что такое код состояния? –

+0

@ArunPJohny Ух ты, не знал этого раньше. Это определенно что-то вернуло. 'falied [Object," parseerror ", SyntaxError]' Is SyntaxError - лучшее место для просмотра? Это немного большая и сложная задача. – vanamerongen

ответ

1

Arun P Johny научил меня использовать вкладку Сеть в инструменты для разработчиков Google Chrome, чтобы выяснить проблему. Оттуда я мог видеть, что путь «admin/expand» должен был «расширяться».

Может быть, это немного локализованный ответ, но я чувствую, что его совет использовать вкладку сети был достаточно полезен, чтобы гарантировать ответ. Возможно, в какой-то момент это будет полезно кому-то другому.