0

いくつかの有効な json を出力し、コンテンツ タイプ ヘッダーを私の開発セットアップで application/json に設定する php コードをいくつか書きました。ただし、このスクリプトを組み込み Web サーバーにデプロイすると、コンテンツ タイプを送信できないことを除けば正常に動作します。他の Web サーバーを実行することはできません。

これで、Dynatable の次のコードが作成されました。私の開発者と私の組み込み Web サーバーはまったく同じファイルを提供しますが、唯一の違いは content-type です。私の開発セットアップでは機能しますが、組み込みセットアップでは機能しません。

次のコードを使用して、json ファイルを dynatable にロードします。

document.ready(
    $.ajax({
        url: 'phpApi.php',
        success: function(data){
            $('#myTable').dynatable({
                dataset: {
                    records: data
                }
            });
        }
    }));

では、コンテンツタイプが ajax にとってなぜそれほど重要なのか、誰か説明してもらえますか? コードに json を手動で伝えるにはどうすればよいですか?

4

2 に答える 2

1

content-type がない場合、返されるデータはプレーン テキストと見なされます。あなたのコードには、それ以外のことを伝えるものは何もありません。

json を取得する 1 つの方法は、jquery コードで戻り値の型を指定することです。dataType: 'json'ajax構成に追加するだけです。

eval()または、返されたテキストを json に変換するために使用できます。

document.ready(
    $.ajax({
        url: 'phpApi.php',
        success: function(data){
            $('#myTable').dynatable({
                dataset: {
                    records: eval(data)
                }
            });
        }
    }));

を使用JSON.stringify(eval(data))すると、そのjsonを確認することで、より良い結果が得られる場合があります。

以下で指摘されているように、JSON.parse(data)おそらくより安全です。(評価は結局悪です。)

于 2015-07-08T23:13:22.113 に答える
0

それでは、コンテンツタイプがajaxにとってなぜそれほど重要なのか、誰かが説明してくれますか?

サーバーが返したコンテンツのタイプをクライアントが識別できるようにすることが重要です。コンテンツ タイプが返されない場合、クライアントは返されたデータがプレーン テキストであると想定します。

コードに json を手動で伝えるにはどうすればよいですか?

dataType : "json"パラメータを $.ajax() に追加します

document.ready(
    $.ajax({
        url: 'phpApi.php',
        dataType: "json",
        success: function(data){
            $('#myTable').dynatable({
                dataset: {
                    records: data
                }
            });
        }
    }));
于 2015-07-08T23:20:15.173 に答える