繁体   English   中英

阿贾克斯总是会出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM