微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我为什么不能通过ajax将PHP的回调数组传递给jquery?

我有一个文件,但是在调试问题时,我将其缩小了,以消除外部所有问题.基本上,我最终得到了这个.PHP文件

<?PHP 
if (isset($_POST['val'])) {
        header("Content-type: application/json; charset=utf-8");
        echo json_encode(array("The first string", "first"));
    }
?>
 <script type="text/javascript" src="javascript/jquery.js"></script>
 <script type="text/javascript">
    $.ajax({
        type: 'POST',
        url: 'other',
        data: {val: 'text'},
        contentType: "application/json",
        dataType: 'json',
        success: function(result) {
            console.log(result);
            alert(result);
        },
        error: function(err) {
            console.log(err);
            alert('Error -> ' + err);
        }
    });
 </script>

在原始代码中,我的PHP和Javascript位于不同的文件中,因此请不要告诉我将PHP继承为javascript这样的<?PHP?&gt ;,
我刚刚研究了很多材料,并且在很多人中都建议采用这种方式.

在此脚本中,将触发错误功能.当我研究这个问题时,我发现,当传递无效的json时,它会被触发.
这是我在警报框中得到的:错误-> [对象对象],这是控制台中显示内容

uncaught exception: out of memory <unkNown>
Object { readyState: 4, getResponseHeader: .ajax/v.getResponseHeader(), getAllResponseHeaders: .ajax/v.getAllResponseHeaders(), setRequestHeader: .ajax/v.setRequestHeader(), overrideMimeType: .ajax/v.overrideMimeType(), statusCode: .ajax/v.statusCode(), abort: .ajax/v.abort(), state: .Deferred/d.state(), always: .Deferred/d.always(), then: .Deferred/d.then(), 11 more… }

如果我将dataType更改为html,并删除co​​ntentType,我将执行成功函数.它通过了:

["The first string","first"]
<script type="text/javascript" src="javascript/jquery.js"></script>
<script type="text/javascript">
$.ajax({
        type: 'POST',

以及页面的其余代码.

我需要接收一个json.为什么这东西不起作用?为什么我没有收到json?

附言
您可能会注意到,URL末尾没有.PHP.
我有一个.htaccess文件,将其删除,所以这不是问题.我禁用了它,并将脚本与.PHP一起使用,但是没有任何变化. PHP代码已执行,但是我没有得到正确的回调…

解决方法:

回显json后,尝试添加出口,这样也不会将下面的html返回给ajax调用.

<?
if (isset($_POST['val'])) {
        header("Content-type: application/json; charset=utf-8");
        echo json_encode(array("The first string", "first"));
        exit; // add exit here so html below is not also returned
    }
?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐