[英]ajax always going to error
我正在尝试学习使用Ajax,但不幸的是我无法success
。
$('.engineering-services').live('click', function() {
$.ajax({
url: 'index.php?route=information/information/homepage_info',
type: 'post',
data: {info_description : 'test'},
dataType: 'json',
success: function(json){
alert('pass');
},
error: function(json) {
alert('fail');
}
});
});
这是php函数...
public function homepage_info() {
$json = array();
if (isset($this->request->post['info_description'])) {
echo $this->request->post['info_description'];
echo '<br /> test2';
}
$this->response->setOutput(json_encode($json));
}
但是,这总是发出失败警报,而不是通过警报。 我在这里错过明显的东西吗?
编辑:找到功能正常,因为它在控制台中给出了正确的响应,
即
测试
测试2
谢谢
如果您的dataType设置为json,则返回的任何非JSON内容都将导致ajax调用出错。 尝试将一些json发送回脚本... {“ test”:“ abc”}或类似名称。 例如,我看到了几个调用以在您的代码中echo
。
不仅如此,打印到浏览器的任何PHP错误/警告/通知都将中断呼叫。
提示:您可以使用json_encode()
从PHP变量生成有效的JSON。
您不能将现有查询字符串与数据结合使用。 这样的事情应该起作用(或至少在语法上有效):
$.ajax({
url: 'index.php',
type: 'post',
data: {information:'information/information/homepage_info',info_description:'test'},
dataType: 'json',
success:function(json){
alert('pass');
},
error:function(json) {
alert('fail');
}
});
同样如前所述,任何不是json的内容都可能会导致错误,因此您不会echo
这些html组件...如果有,请print
它们。
另外,请注意,您的dataType应该在服务器端使用header('Content-type: application/json');
在index.php
而不是在jQuery脚本中声明。 它保证以这种方式被识别为json,而且Javascript代码更少。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.