[英]$this->_request->isXmlHttpRequest() Not Working
我正在研究对我来说不熟悉的ZEND框架,AJAX的情况也是如此。 我尝试了很多例子,但没有它们起作用。
请告诉我这个代码我错了。
home.phtml
<select name="year" onchange="saveChanges(this);">
<option value="najam">Najam</option>
<option value="Ali">Ali</option>
<option value="Hassan">Hassan</option>
<option value="Hassam">Hassam</option>
</select>
<script type="text/javascript">
function saveChanges(object){
$.ajax({
method :'POST',
url: 'home',
data: object.value,
cache: false,
error: function(e){
alert(e);
console.log("error" + e);
},
success: function(response){
// A response to say if it's updated or not
alert("Success" + object.value);
console.log("Success");
}
});
}
</script>
HomeAction
if($this->_request->isXmlHttpRequest()){
//do this
}
else {
//do this
// It always in the else Part.
}
虽然它在控制台上打印成功消息,但也在javascript警告消息上打印。
如果这段代码出错,请帮帮我
在Zend Framework中,您可以为操作添加ContextSwitch
。 基于上下文,操作将在相关模板中呈现。
例如
public function init()
{
$contextSwitch = $this->_helper->getHelper('contextSwitch');
$contextSwitch->addActionContext('list', 'xml')
->initContext();
}
在你的情况下
$contextSwitch->addActionContext('home', 'ajax')
请参见http://framework.zend.com/manual/1.8/en/zend.controller.actionhelpers.html
编辑:这是针对ZF1的,如果您使用的是ZF2,您可能需要View Strategy
http://framework.zend.com/manual/2.0/en/modules/zend.view.quick-start.html#creating -and-注册-交替渲染-响应的策略
method :'POST'
至
type: "POST"
我总是使用$this->_request->isXmlHttpRequest()
来检测ajax请求并始终工作。
对不起,我说英语不太好
更新:
控制器:
final class IndexController extends Zend_Controller_Action
{
final public function indexAction(){
if($this->_request->isXmlHttpRequest()){
header('Content-type: application/json;charset=UTF-8');
exit(json_encode(($this->_request->getPost())));
}
}
}
视图:
<select id="year" name="year">
<option value="najam">Najam</option>
<option value="Ali">Ali</option>
<option value="Hassan">Hassan</option>
<option value="Hassam">Hassam</option>
</select>
<script type="text/javascript">
$(function(){
$("#year").change(function(){
var _this = $(this);
$.ajax({
type :'POST',
url: "", // empty string means current URL
data: {year: _this.attr("value")},
dataType: 'json',
cache: false,
error: function(e){
console.log(e);
},
success: function(response){
console.log(response);
}
});
});
});
</script>
这是源代码:
http://www.mediafire.com/?hvv4830macfl0wm
希望有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.