繁体   English   中英

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

[英]Why cant I pass a callback array from PHP to jquery via ajax?

我有一个大文件,但是当我调试问题时,我缩小了它,以消除外部的一切。 基本上我最终得到了这个.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 ?> ,我刚刚研究了很多材料,并且很多人都这样建议。

在此脚本中,将触发错误功能。 当我正在研究这个问题时,我发现,当无效的json通过时它会被触发。 这是我在警告框中得到的: Error -> [object Object] ,这是我在控制台中得到的:

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?

PS你可能会注意到,我在网址的末尾没有.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
    }
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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