1

codeigniter の ajax/jquery に問題があります。

Html ページにボタンがあります。ボタンを押すと、次のハンドラーが呼び出されます。

ボタン押下のハンドラー:

function postMessage(e) {
    var postUrl = 'http://localhost/myProject/index.php/main/post_message';
    $.ajax({
        type: "POST",
        url: postUrl,
        success: successfulPost,
        dataType: "text"
    });      
}

ajax コールバック:

function successfulPost(data) {
    data = JSON.parse(data);
    document.write(data[0].hello);
}

メインコントローラー内のサービス機能:

function post_message() {   
    echo "[{\"hello\":\"world\"}]";
    return;  
}

問題は、JSON.parse() が彼の仕事を成し遂げていないように見えることです。

これらの関数は非常に単純なので、コードイグナイターに問題があるのではないかと考え始めています。

編集:

興味深いのは、まったく同じ json 文字列を JSON.parse() に入れると解析されることです。問題は、サービス関数がそれを渡すときです。

編集:

json 文字列の文字数を数えると 13 のはずですが、17 になります...

編集:

エコーが適切に行われていても、HTTP 応答の本文の先頭に奇妙な文字があることを認識しています...改行 \0 やタブなど、誰かが理由を知っていますか?

4

2 に答える 2

0

PHP でヘッダーを設定してみてください。

$data = array("hello" => "world");
header('Content-Type: application/json');
echo json_encode($data);

PHP スクリプトから JSON を返す

于 2013-08-16T21:07:28.683 に答える