2012-05-22 4 views
0

작동하는 AJAX 호출을 관리하는 동안 새로 생성 된 동작이 아니라 이미 생성 된 동작과 작동하지 않습니다.Extbase AJAX 호출은 일부 동작에서만 작동합니다.

내 Typoscript은 다음과 같습니다

 

    
    lib.AJAXPrototype= PAGE 
    lib.AJAXPrototype { 
     typeNum = 896571 
     config { 
     disableAllHeaderCode = 1 
     xhtml_cleaning = 0 
     admPanel = 0 
       debug = 0 
       no_cache = 1 
     additionalHeaders = Content-type:text/html 
     } 
    } 

    AJAX_Plugintyp < lib.AJAXPrototype 
    AJAX_Plugintyp { 
     typeNum = 89657201 
     10 < tt_content.list.20.myext_myplugin1 
    } 

내 AJAX 호출이 다음과 같습니다

 

    $.ajax({ 
     url: "index.php", 
     data: "tx_myext_myplugin1[controller]=Mycontroller1&tx_myext_myplugin1[action]=ajax&type=89657201", 
     success: function(result) { 
     alert(result); 
     } 
    }); 

내 ajaxAction :

 

     /** 
     * action ajax 
     * 
     * @return void 
     */ 
     public function ajaxAction() { 
      $test = 'sometext'; 
      $this->view->assign('test', $test); 
     } 
 

내 Ajax.html (보기/출력) :

 

    <f:section name="main"> 
    <f:flashMessages /> 
    <div id="ajaxd">{test}</div> 
    </f:section> 

나는 이것으로부터 어떤 결과도 얻지 못할 것이고, 나는 Ajax 출력을 위해이 액션을 만들었다. 그러나 다른 컨트롤러/액션 조합을 사용하면 작동합니다! 새로운 액션으로 내가 무엇을 잘못했을 수 있습니까?

+1

는 스크립트가보기에 별도의'js' 파일에 저장하거나 바로 확인 할 수있는 유일한 방법 : 대부분의 아마 당신은 뭔가를 수신했다? – biesior

+0

@Marcus : 테스트를 위해보기에 바로 쓰여집니다. – user828591

답변

0

좋아요, 지금 당장 작동합니다. 미친 듯이 들릴지 모르지만 실제로 작동하려면 아무 것도 변경하지 않았습니다.

나는 ext_localconf.php에 추가하는 것을 잊지 않았다

 

    
     Tx_Extbase_Utility_Extension::configurePlugin(
      $_EXTKEY, 
      'Myplugin1', 
      array(
       'Mycontroller' => 'list, ajax', 
      ), 
      // non-cacheable actions 
      array(
       'Mycontroller' => 'list, ajax', 
      ) 
     ); 
     

그러나, 나는이 어제했고, 이후, 그것은 작동하지 않았다. 오늘 나는 typoscript에서 임의의 편집을 다시 시도했다. (pagetype 변경 등) 갑작스럽게 작동했다. 그러나, 나는 어제 가지고 있던 정확한 상태로 돌아 갔고 여전히 효과가 있었다. 혼란 스럽습니다. 제가 타이포 스크립트를 재 배열해야만하는지 아니면 어떤 이유로 다시 작성해야하는지는 모르겠지만, 지금은 효과가 있습니다! 뷰 종종 실패에 직접 JS 배치 아약스와 Extbase

먼저에 대한

+0

AFAIK extbase는 몇 가지 내부 캐시를 사용합니다 ... 아마도 캐시 중 하나가 시간 초과 되었습니까? – pgampe

2

두 가지, 유체는 자신의 배열/변수로 자바 스크립트의 배열을 분석하려고하기 때문이다. 매우 불편합니다. 솔루션은 JS를 개별 파일에 배치하므로 (이에 대한 질문이 나왔습니다.) See this question/answer

두 번째 것은 Firebug (또는 다른 유사한 도구)입니다. Extbase 링크의 매우 긴 경로를 사용하면 몇 가지 성가신 실수를하기 쉽습니다. 그런 다음 char을 신중하게 비교해야합니다.

방화범이 끌리는 것은 AJAX 문제를 매우 빠르게 발견하는 데 도움이됩니다. 그냥 Net 탭으로 전환 한 다음 몇 가지 조치를 취한 후 반환되는 내용을 아약스로 보게됩니다.

Uncaught TYPO3 Exception: 
The action "xxxxx" (controller "Yyyy") is not allowed by this plugin... 

하지만 방화범으로 디버깅됩니다 :)

+0

다시 한 번 감사드립니다. 다른 질문에서 이상하게도 Net-tab이 활성화되지 않았으므로 장담 할 수 있습니다. 그러나 내가 썼을 때, 그것은 이미 (어떤 식 으로든) 해결되었습니다. 그래도 도움을 주셔서 감사합니다. 앞으로 JS를 처음부터 외부 파일에 넣으 려합니다. 한편, 작업 내에서 데이터베이스 필드의 값을 가져 와서 배열로 AJAX로 다시 제출하는 방법을 알고 계십니까? 그건 내 다음 문제가 될거야 :) – user828591

+0

Firebug의 탭 중 일부는 기본적으로 사용하지 않도록 설정되어 있습니다. 클릭하면 다음 수동 사용 중지까지 사용하도록 설정됩니다. DB 값에 관하여 : yeap, 나는 속임수를 안다. 그러나 새로운 질문을 만들고 당신이 달성하기를 원하는 것을 증명하는 것이 더 좋다. – biesior

+0

고마워요, 바로 시작하겠습니다 :) – user828591

관련 문제