0

我在我的本地机器上开发了一个站点并让它工作正常,但是在将它上传到我的远程主机后,ajax/json 调用无法运行。

我已经检查了在重定向运行之前编写的任何 html,我唯一能找到的就是我在哪里回显 json_encode($return)。

这是问题吗?如果是这样,有人知道我该如何解决这个问题。?使用回声的替代方法可能吗?

谢谢

下面的代码带有标签,说明我认为问题可能出在哪里......

<script type="text/javascript">

$(document).ready( function() {
    $("#addStory input[type=submit]").click(function(e) {
        e.preventDefault();
        $.post('editor.php', $("#addStory").serialize(), function(result) {
            alert(result.adminList);
        }, "json");
    });
});

</script>



<form name="addStory" action="" method="post" id="addStory">
    <input type="text" id="test_text" name="test_text" />
    <input type="submit" value="Submit" />
</form>

这里是 editor.php...

<?php

header('application/json');

$return = array();
$return['adminList'] = "Hello World!";
echo json_encode($return);

?>

“Hello World”警报没有发生......

4

1 回答 1

2

您确实遇到的一个问题是第二个问题header('application/json')位于第一个 SQL 查询的输出之后。但是,只有当$row['column_name'] == 0它为真时才会出现这种情况。

如果它总是要返回 json,那么只需将其设置在 php 代码的顶部,以避免以后混淆。

<?php
    header('application/json');

    //all your sql etc here

?>

在我们的讨论中,我还注意到您的标题实际上是不正确的。它应该是

header('Content-type: application/json');

删除它也可以,但这可能是一个坏主意,因为这有助于告诉接收者期望什么类型的数据。

另一点是您当前的 ajax 应该真正利用getJSON()jQuery 中的函数,它会自动返回一个 json 对象。

$.getJSON('example.php', function(data) {
    //use data as a json object
}); 
于 2012-07-13T10:36:48.227 回答