2014-02-05 2 views
4

내 컨트롤러는이 기능이 작동하지 않습니다 대시 보드 페이지에서 예상 한 works 텍스트 대신. 그러나 브라우저에서 직접 URL을 열면 예상 텍스트가 표시됩니다.젠토 아약스는

내가 뭘 잘못하고 있니?

아, 그리고 내가 반환 URL의 끝에 ?isAjax=true를 추가 시도 :

{"error":true,"message":"Invalid Form Key. Please refresh the page."} 

편집 : 그냥 명확히 : - 는 getUrl 콘솔에서 http://localhost/devmagento/index.php/prodcal/adminhtml_prodcaltab/saveLeadDays‌​/key/d3c92257c664d8d207f5a0bdeb3edebf/ 같은 URL을 생성합니다. 콘솔에서이 URL을 복사하여 브라우저에 붙여 넣으면 예상대로 작동하고 works 텍스트가 표시됩니다. 그러나 jQuery 게시와 함께 사용하면 실패하고 대시 보드로 리디렉션됩니다.

는 편집 2 : 나는 GET을 사용하고 getUrl 함수 내에서 값을 넣어 위를 변경하는 경우 그것은 포스트 데이터 보인다, 키가 잘못, 원인은 제대로 작동하지만,이 때문에 문제입니다 아약스에 의해 수행 될 수, 나는 자바 스크립트를 사용하여 동적으로 값을 변경해야합니다. 나는 일에 GET 일에 대해 무슨 짓을

은 다음과 같습니다

jq("#prodcal_leaddays").on("blur", function(e){ 
     $saveurl="<?=$this->getUrl('prodcal/adminhtml_prodcaltab/saveLeadDays',array('id'=>'test'));?>"; 
     console.log($saveurl); 
     jq.get($saveurl,function(d){ 
      console.log(d); 
     }); 
    }); 

답변

0

이 코드에 의해 생성 된 URL :

대시 보드로 리디렉션되도록
$this->getUrl('prodcal/adminhtml_prodcaltab/saveLeadDays') 

은 찾을 수 없습니다. 수동으로 시도하면 getUrl() 함수에 의해 자동으로 추가되는 변수 key이 없으므로 해당 오류가 발생합니다. 그 key은 일종의 세션 컨트롤러이며 항상 변경됩니다.

올바른 컨트롤러 동작을 얻으려면 파일 구조를 확인해야합니다. 당신의 getUrl 매개 변수, 그것은/응용 프로그램/코드/지역 (또는 지역 사회)가 될 말아야/Yourname 활용할/Prodcal/컨트롤러/Adminhtml은/ProdcaltabController.php

이 방법으로 응답 돌아

:

$array = array('works');  
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($array)); 
+0

URL은 콘솔 로그에서 URL을 복사하여 브라우저에 수동으로 붙여 넣으면 발견됩니다. 그래서 액션과 컨트롤러가 모두 자리 잡고 있습니다. – Aoi

+0

1) 붙여 넣은 URL에 허위 문자를 추가하면 관리자 권한이없는 경우 대시 보드로 리디렉션됩니다. 테스트가 유효하지 않습니다. 2) URL은 유효하고 Magento에서 콘텐츠 본문을 찾을 수 없거나 대시 보드로 대체 된 경우에도 항상 발견됩니다.답변을 업데이트했는지 확인하기 위해 답변을 업데이트했습니다. – Thundar

+0

추신 : 질문을 추가하여 콘솔 로그에서 URL을 복사/붙여 넣으십시오. – Thundar

2

당신을 POST ajax 요청을 사용할 수 있지만 URL에 ? isAjax = 1을 추가하고 params에 form_key을 추가해야합니다. 예 :

+1

FORM_KEY js 변수가 이미 머리에 설정되어 있기 때문에 대부분의 관리 페이지에서'var values ​​= { 'form_key': FORM_KEY};를 사용할 수도 있습니다. – Zsolti