2012-11-20 4 views
8

이 내 아약스 요청을 호출 할 때 내가 무엇을 얻을의 스크린 샷에서 Ajax 요청 만들기 위해 :방법 줌라 구성 요소

enter image description here

어떻게 전체 페이지를 인쇄하지 않고, 난 단지 작업을 실행합니까?

$.ajax 
({ 
type: "POST", 
url: "index.php?option=com_similar&task=abc", 
    data: { 
     id: id, 
     name: name, 
     similar_id: similar_id, 
    }, 
cache: false, 
success: function(html) 
{ 
$("#flash").fadeOut("slow"); 
$("#content"+similar_id).html(html); 
} 
}); 
}); 

$(".close").click(function() 
{ 
$("#votebox").slideUp("slow"); 
}); 

}); 
+1

"전체 페이지 인쇄 없음"이란 무엇을 의미합니까? 아무것도 인쇄하지 않으시겠습니까? 또한, 당신은 완전한 아약스 요청을 표시하지 않습니다, 그것은}}로 끝나야합니다; . –

+0

스크린 샷을보세요. 이건 여기 중요하다고 생각하지 않기 때문에 나는 완전 아약스를 작성하지 않았다. – Jonuux

+0

나는 예상되는 출력이 무엇인지 모르겠다. 어떤 일이 일어나야합니까? –

답변

28

출구로 이동하거나, 줌라 죽지 않는이 내 아약스 호출입니다! 이 물건을 다루는 좋은 방법이 있습니다.

아래의 답변은 Joomla!에서 테스트되었습니다! 2.5 & 3 (1.5로 작동 할 수도 있음).


일반 작업에 대한 귀하의 URL는 다음과 같이 할 필요가

:

index.php?option=com_similar&task=abc&format=raw

당신보다보기를 사용하는 컨트롤러를 생성,의는 ABC 방송을 가정 해 봅시다 이 파일에는 view.raw.html 파일 (일반보기 파일과 동일)이 들어 있습니다.

당신은 원시 HTML 응답을 생성하는 코드가 아래 :

/controller.php

public function abc() 
{ 
    // Set view 
    JRequest::setVar('view', 'Abc'); 
    parent::display(); 
} 

/views/abc/view.raw.php

<?php 
defined('_JEXEC') or die; 

jimport('joomla.application.component.view'); 

class SimilarViewAbc extends JView 
{ 
    function display($tpl = null) 
    { 
     parent::display($tpl); 
    } 
} 

/views/abc/tmpl/default.php

<?php 

echo "Hello World from /views/abc/tmpl/default.php"; 

참고 :이 나는 (그것을 청소기의와 줌라 논리를 다음) HTML을 반환해야한다면 내가 사용하는 것이 해결책이다. 간단한 JSON 데이터를 반환하는 방법은 컨트롤러에 모든 것을 넣는 방법을 참조하십시오. 같은 당신이 subcontroller로 Ajax 요청을하면


, (원시 뷰) 당신의 subcontroller 이름보다

index.php?option=com_similar&controller=abc&format=raw

abc.raw.php 할 필요가있다.

즉, Abc라는 하위 컨트롤러가 2 개 있거나있을 수도 있습니다.

JSON을 반환하는 경우 format=jsonabc.json.php을 사용하는 것이 좋습니다. Joomla 2.5에서. 이 옵션을 작동시키는 데 몇 가지 문제가있었습니다 (어떻게 든 출력이 손상되었습니다). 그래서 raw를 사용했습니다.당신은 어떤을 반환합니다 (만약 당신이 모델을 호출 할 것이다 당신은 일반적으로 컨트롤러에이 코드를 넣어 것 문서 페이지 Generating JSON output

// We assume that the whatver you do was a success. 
$response = array("success" => true); 
// You can also return something like: 
$response = array("success" => false, "error"=> "Could not find ..."); 

// Get the document object. 
$document = JFactory::getDocument(); 

// Set the MIME type for JSON output. 
$document->setMimeEncoding('application/json'); 

// Change the suggested filename. 
JResponse::setHeader('Content-Disposition','attachment;filename="result.json"'); 

echo json_encode($response); 

을 확인, 유효한 JSON 응답을 생성 해야하는 경우


인코딩하는 데이터 - 매우 일반적인 시나리오). 추가로 처리해야하는 경우 원시 예제와 비슷한 JSON보기 (view.json.php)를 작성할 수도 있습니다. 보안


이제 Ajax 요청이 작동하는지, 아직 페이지를 닫지 마십시오. 아래를 읽으십시오.

요청 위조 여부를 확인하는 것을 잊지 마십시오. JSession::checkToken()이 여기에 편리합니다. CSRF anti-spoofing to forms


다국어 사이트를 추가하는 방법에 대한 설명서를 읽어

당신이 요청에 언어 이름을 전송하지 않는 경우, 줌라 원하는 언어 문자열을 번역하지 않습니다 발생할 수 있습니다

.

어떻게 든 lang 매개 변수를 요청에 추가하는 것을 고려하십시오 (예 : &lang=de).


Joomla! - Joomla! Ajax Interface

이제 Joomla는 플러그인 또는 모듈에서 Ajax 요청을 처리 할 수있는 간단한 방법을 제공합니다. Joomla!를 사용하고 싶을 수도 있습니다. 이미 컴포넌트가 없거나 이미 가지고있는 모듈로부터 요청을해야하는 경우 Ajax 인터페이스.

+2

그레이트 포스트! 뭔가를 알고 있어야 할 때 Joomla는 아약스 용 디스플레이 원시에 문제가 있습니다 ... http://forum.joomla.org/viewtopic.php?p=1915019. 이 바로 그 이유 때문에 뷰로 전달하는 대신 내 컨트롤러에서 아약스 호출에 대한 출력을 반향시켜야했습니다. – Cleanshooter

+1

@Cleanshooter - 서브 컨트롤러 다루는 방법에 대한 정보를 추가했습니다.내 구성 요소에 아약스를 많이 사용하고 있으며 지금까지이 문제를 다루는 데 전혀 문제가 없었습니다. 어떤 문제가 생기면 여기에 몇 가지 코드를 게시하여 Joomla!에 대한 더 많은 품질 정보를 수집 할 수 있습니다. 공장. 감사. –

+0

@ValentinDespa - view.raw.php 코드에 오타가 있습니다. parrent :: display ($ tpl)는 parent :: display ($ tpl) 여야합니다. – mozami

0

일부 HTML 요소에 응답 결과를 포함 시키려면 위에서 언급 한 것처럼 format = raw를 URL에 추가하십시오. 그러면 다음과 같은 컨트롤러 기능을 사용할 수 있습니다 :

AJAX 응답은 사용자가 프린트/에코 된 모든 것을 컨트롤러에 출력합니다.

관련 문제