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

あなたが抱えている問題の1つは、2番目header('application/json')が最初のSQLクエリの出力の後に配置されることです。ただし、これは true の場合にのみ$row['column_name'] == 0当てはまります。

常に json を返す場合は、これを php コードの先頭に設定して、後で混乱しないようにします。

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

    //all your sql etc here

?>

また、ディスカッション中に、ヘッダーが実際には間違っていることに気付きました。そのはず

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

削除することもできますが、受信者に期待するデータの種類を伝える目的に役立つため、これはおそらく悪い考えです。

もう 1 つのポイントは、現在の ajax は、getJSON()自動的に json オブジェクトを返す jQuery の関数を実際に利用する必要があるということです。

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