0

$.getJSON関数の応答が意味をなさないJQuery/JSONの問題に頭を悩ませています。

これが私のJavascriptコードの抜粋です:

var jqxhr = $.getJSON("myPHPFunction.php", function() {
      alert("success");
    })
    .success(function() { alert("second success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });

PHP関数によって返されるJSONは次のとおりです。

{"sid":"12", "name":"somename", "email":"someemail"}

フルレスポンス:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body> {"sid":"12", "name":"somename", "email":"someemail"}
</body>
</html>

スクリプトを実行すると、「。」というダイアログボックスが表示されますerror

いくつかのオンラインバリデーターは、JSONが構文的に正しいと報告しています。では、なぜJQueryは失敗するのでしょうか。phpとスクリプトの両方が同じフォルダー(サーバー上)と同じドメインにあることに注意してください。

4

2 に答える 2

3

コメントから、JSONをHTMLマークアップにカプセル化することはできません。返されるデータ(「ソースの表示」はこれを確認するための優れたツールです)が純粋なJSONであることを確認する必要があります。

于 2013-02-08T19:19:24.420 に答える
1

応答にはHTMLを含めないでください。

おそらく、正しいコンテンツタイプを設定する必要もあります。

header("Content-Type: application/json");
echo('{"sid":"12", "name":"somename", "email":"someemail"}');
exit();

上記のコードは機能するはずです。

ヘッダー行の前に他のコードを出力してはならないことに注意してください。

于 2013-02-08T19:14:00.227 に答える