2014-06-22 134 views
0

我想做一个ajax请求,允许用户从输入字段发送一些数据到数据库,然后返回到输入字段,就像评论框一样,所以数据应该插入到数据库中,然后显示在无需重新加载页面,在这里输入字段是我的代码:如何在Yii中制作ajax请求?

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)的例子:

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

在你的控制器的动作,不要忘记送输出JSON:

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

编辑:如果您不需要jQuery的,看到这个SO回答用于在没有jQuery的情况下进行Ajax调用:https://stackoverflow.com/a/8567149/911718

+0

如果你只*做AJAX请求,那么没有必要拉下整个'jQuery'工具包。更好的做法是用香草豆做。 – christopher

+0

我同意这一点。 –

+0

这可能是值得包括链接到/一些示例代码在香草JavaScript。 – christopher