0

次のjQuery.ajax()呼び出しをデバッグしようとしています。

var rollnum = $('#rollNum').val()
$.ajax({
url: sURL + "myController/myMethod",
type: "POST",
data: {rollnum: rollnum},
dataType: 'json', 
success: function(json){alert(json)},
error:function (xhr, ajaxOptions, thrownError){
       alert(xhr.status);
       alert(thrownError);}
});

方法は次のとおりです。

function myMethod(){
$query = $this->db->query("SELECT tblontario.Address, tblontario.Municipality FROM tblontario WHERE RollNum = 211010002528200");
$json_address = array();
$json_municipality = array();
foreach ($query->result_array() as $row){
    $json_address[]     = $row['Address'];
    $json_municipality[] = $row['Municipality'];
}
$json['address'] = $json_address;
$json['municipality'] = $json_municipality;
echo json_encode($json);
exit;
    }

現在起こっていることは、私がエラーを受け取っているということです。エラーは次の詳細で構成されています。

xhr.status: 200; and
thrownError: SyntaxError: JSON.parse: unexpected character

Firebugの[XHRResponse]タブを見ると、次のように表示されます。

Reload the page to get source for: http://www.mysite.ca/myController/myMethod

xhr.statusが200になっているため、何かが正しく機能しているようですが、この呼び出しからjsonデータを取得できないようです。誰かが私に問題が何であるかについての提案を与えることができますか?ありがとう。

4

3 に答える 3

3

コンテンツのヘッダーを json の type に設定... ヘッダーのタイプを設定する例を次に示します。

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

jQuery 1.4 以降では、JSON データは厳密な方法で解析されます。

不正な形式の JSON は拒否され、解析エラーがスローされます。

于 2012-07-19T05:36:14.357 に答える
1

サーバーは、リダイレクト コードの 1 つではなく、コード 200 を含むリダイレクト ページを返します。ステータス コードが 200 であるため、AJAX 呼び出しはリダイレクトされず、JSON ではないため、応答をデコードできません。

サーバーが正しいステータス コードを返すようにするか、ページをプレーン テキストとして要求して、ページを調べてリダイレクト メッセージを探してからデコードできるようにします。

于 2012-07-19T05:31:27.583 に答える
0

テキスト エディターで BOM (BOM なしの UTF-8 エンコード) をオフにします。BOM は、UTF8 ファイルの先頭にあるシステム (表示されない) シンボルです。

于 2013-05-28T21:27:02.020 に答える