2017-01-19 7 views
2

Я пытаюсь заменить «Hello world!» с «Привет вам», используя ajax replaceWith. Однако я получаю эту ошибку:Невозможно прочитать свойство «replaceWith» of null - ajax call

Cannot read property 'replaceWith' of null

Где я ошибаюсь?

ПРИМЕЧАНИЕ: вызов ajax работает с предупреждением (ответом);

index.phtml:

<div id="helloworld">Hello world!</div> 

<script type="text/javascript"> 
    jQuery.ajax({ 
     url: "<?php echo $this->getUrl('topperproductqa/index/ajax') ?>", 
     success: function(response){ 
      $('#helloworld').replaceWith(response); 
      //alert(response); 
     } 
    }); 
</script> 

IndexController.php:

class Topper_ProductQA_IndexController extends Mage_Core_Controller_Front_Action 
{ 
    public function indexAction() 
    { 
     $this->loadLayout(); 
     $this->renderLayout(); 

     return $this; 
    } 

    public function ajaxAction() 
    { 
     $response = "Hello to you too"; 

     $json = json_encode($response); 
     $this->getResponse()->setHeader('Content-type', 'application/json'); 
     $this->getResponse()->setBody($json); 
    } 
} 
+1

Что у вас есть прекрасные работы: https://jsfiddle.net/dn892efr/. Вы уверены, что этот код вызывает проблему? –

+1

попробуйте это, чтобы узнать, действительно ли у вас элемент или нет. Это могут быть проблемы с библиотекой jquery 'console.log ($ ('# helloworld')); ' – lakshay

+0

Спасибо! Это заставило меня взглянуть дальше кода, и я понял, что это связано с «прототипом» magento, который использует «$». –

ответ

1

Я понял, Magento использует $ на prototype.js, я установил его:

(function($) { 

    $.ajax({ 
     url: "<?php echo $this->getUrl('topperproductqa/index/ajax') ?>", 
     dataType: "json", 
     success: function(response){ 
      $("#helloworld").replaceWith(response); 
      //alert(response); 
     } 
    }); 

})(jQuery);