2014-06-22 2 views
0

사용자가 입력란에서 데이터베이스로 일부 데이터를 보낸 다음 메모 상자와 마찬가지로 입력 필드로 반환하여 데이터를 데이터베이스에 삽입 한 다음 표시하도록 Ajax 요청을 만들고 싶습니다.Yii에서 아약스 요청하는 법?

function getHTTPObject(){ 
    if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); 
    else if (window.XMLHttpRequest) return new XMLHttpRequest(); 
    else { 
     alert("Your browser does not support AJAX."); 
     return null; 
    } 
} 


// Implement business logic  
function doWork(){  
    httpObject = getHTTPObject(); 
    if (httpObject !== null) { 
     httpObject.open("GET", "a page or a controller action" 
         , true); 
     httpObject.send(null); 
    // httpObject.onreadystatechange = setOutput; 
    } 
} 

그래서, 전체 페이지를 떠나지 않고 컨트롤러 액션을 호출 할 수있는 요청을 어떻게 만들 수 있습니다 여기에, 페이지를 다시로드하지 않고 입력 필드 내 코드?

+0

컨트롤러에 매핑 된 'url'에 요청함으로써. – christopher

+0

@christopher 예제? –

답변

3

먼저 Ajax 요청을하려면 jQuery를 사용하는 것이 좋습니다. 그것은 훨씬 쉬울 것입니다. 컨트롤러의 액션에서

jQuery.getJSON('/path/to/your/controller/someAction/',function(response) { 
console.log('Server reply : ',response); 
} 

는 JSON으로 출력을 보낼 것을 잊지 마세요 :

여기 (jQuery를 사용하여) 예입니다

public function actionSomeAction() 
{ 
    die(json_encode("This is my response")); 
} 

편집 : 당신이 jQuery를 필요로하지 않는 경우, jQuery없이 Ajax 호출을 만들기위한이 SO 응답을 참조하십시오. https://stackoverflow.com/a/8567149/911718

+0

만약 당신이 AJAX 요청을 * 그냥 * 작성한다면, 전체'jQuery' 툴킷을 풀어 버릴 필요가 없습니다. 바닐라 자바 ​​스크립트로 해보는 것이 좋습니다. – christopher

+0

나는 그것에 동의한다. –

+0

바닐라 자바 ​​스크립트에/some example code에 대한 링크를 포함하는 것이 좋습니다. – christopher