2014-11-13 2 views
0

다음 코드는 내 보기에/tmpl/edit.php :줌라 3.3 AJAX 호출

:
<script type="text/javascript">    
      jQuery("#button").click(function(){ 
       jQuery.ajax({ 
        url:'somefile.php', 
        type:'POST', 
        data: {action:"1"}, 
        success: function(response) {alert(response);} 
       }); 
      });   
     </script> 

과 같은 폴더에 내가 다음 코드로 somefile.php

if (isset($_POST['action'])) { 
     SomeFunction(); 
} 

function SomeFunction() 
{ 
    ...do something 
} 

내 문제는 버튼을 누르면 somefile.php에 액세스하지 못한다는 것입니다. 스크립트는 실행되지만 (경고와 함께 확인 됨). 여기서 내가 뭘 잘못하고 있니?

몇 가지 관련 샘플/예제 코드로 그 방향을 보여주십시오.

감사합니다.

+1

오류 : function() {alert ('error'); }'성공 후 : function (response) {alert (response);}'그리고 오류 경고를 받았는지 확인하십시오. – ekad

+0

오류가 발생하지 않습니다. 실제로 파이어 버그를 디버깅에 사용하면 POST가 메시지를 반환합니다. 200 OK – dimst

+0

** somefile.php **에 액세스 한 적이 없다는 것을 어떻게 알 수 있습니까? 경계()를 어디에 두셨습니까? – hashbrown

답변

1
  1. 'somefile.php'를 Joomla 및 파일 이름에서 탐색중인 현재 URL과 동일한 URL로 호출하는 경우. 파일 경로에 매핑되지 않습니다.

    예 : 사이트의 첫 페이지 인에있는 경우 AJAX 요청은
    http://example.com/somefile.php

    이며, http://example.com/blog/mypost01 페이지는 http://example.com/blog/somefile.php으로 매핑됩니다.

    http://example.com/components/com_mycomponent/view/tmpl/somefile.php

  2. 먼저가 나는 이것이 당신에게 명확한 아이디어를 줄 것이다 전체 requestresponse,주기를 모니터링 할 수 Charles 같은 프록시를 사용합니다 : 파일이처럼 어딘가에 실제로으로

    이 모두 잘못된 것입니다 무슨 일이 일어나고 전체 요청/리디렉션/응답주기.

  3. 확인 확실히 당신은 Error Reporting 활성화 Development와의 Joomla 디버그 모드, 당신은 반환되는 오류가 아닌 200 결과를 볼 수 있습니다 그 방법까지 모든 방법을 돌았 다.

  4. 일부 Joomla 3 htaccess 구성 및 보안 확장 (AdminTools)을 사용하면 php 파일에 직접 액세스하지 못하게됩니다. 이것이 문제인 경우, 안전하지 않거나 부정확 한 방식으로 수행하고 있다는 신호 일 수 있습니다.

  5. 귀하가 Joomla 3.3을 사용하고 있으므로 ing Joomla Ajax Interface에 관한 내용은 Joomla Doc's site입니다.

  6. 마지막으로, 자신 만의 구성 요소를 만드는 것처럼 보이기 때문에 직접 PHP 파일에 액세스하는 대신 AJAX 호출을 구성 요소를 통해 적절한 컨트롤러의 메서드로 전달할 수 있습니다.

+0

팁 주셔서 감사합니다! 나는 이미 6 점으로 이동했다.또한 GET 호출이라고 가정하고 호출의 메서드에 매개 변수를 전달하는 방법은 무엇입니까? 다시 한 번 감사드립니다! – dimst

+0

['JInput'] (http://docs.joomla.org/Retrieving_request_data_using_JInput) (Joomla 컨트롤러에 있어야 함)를 사용하는 경우'get' 또는' post'가 사용됩니다. – Craig