ajax 호출을 작성하고 웹 페이지에 결과를 기록하는 간단한 텍스트 jquery 코드가 있습니다. 그것은 독자적으로 작동하지만 drupal 7 사이트의 페이지에는 포함되지 않습니다.drupal 7 jquery ajax 호출이 작동하지 못하도록합니다.
코드는 hook_block_view_alter()를 사용하여 페이지에 쓰는 사용자 정의 모듈을 통해 포함됩니다. 여기입니다 :
<script type="text/javascript" src="/path/to/jquery.js"></script>
<script>
$(document).ready(function(){
$("#carrotlink").click(function(event){
event.preventDefault();
alert("starting ajax call.");
$.ajax({
type: "GET",
url: 'http://my.datasource.page/',
data: "parameter=5",
success: function(data) {
alert('starting ajax callback');
result = "The oracle says: " + data;
jQuery('#ccbuy').fadeOut(function() { jQuery('#ccbuy').html(result); jQuery('#ccbuy').fadeIn(); });
alert('ajax callback complete');
}
});
alert('ajax call complete');
});
});
</script>
나는 일반 웹 페이지에 넣고, 여기 무슨 일이야 :
- 내가 ID "carrotlink"로 링크를 클릭합니다.
- "start ajax call"이라는 경고 메시지가 나오고 "ajax call complete"가 바로 발생합니다.
- 잠시 후 "start ajax callback"및 "ajax callback complete"라는 경고가 표시됩니다.
- ID가 "ccbuy"인 div는 새 콘텐츠로 페이드 아웃되고 페이드 인됩니다. 링크를 클릭
내가 드루팔 페이지에서이 코드를 포함는 "시작 아약스 전화"와 "아약스 호출 완료"알림을 제공합니다,하지만 난 콜백 경고를 결코 및 사업부는 변경되지 않습니다.
위의 단순화 된 결과로 디버깅하는 데 몇 시간을 보냈습니다. 분명히 내 jquery 작동, 대상 링크가 의도 한대로 변경되고 의도 된 함수를 클릭 할 때 호출됩니다. 아약스 전화는 그냥 일어나지 않습니다. 왜 이럴 수 있니?
추신 : 나는 drupal이 drupal_add_js()뿐만 아니라 ajax를 통해 텍스트를 대체하는 자체 메서드를 가지고 있다는 것을 알고있다. 그러나 필자는 독립형 웹 사이트의 일부로 사용하려고하는 기능을 이미 작성했으며 모든 것을 다시 구현하는 것보다는 Drupal 페이지에 포함하려고합니다. 그리고 그것이 일하는 것에 너무 가깝습니다!