2012-04-02 8 views
5

配列内のjsonを使用して、PHPファイルからajaxに複数の変数を返送しようとしています。 phpファイルのコードは完璧に動作し、私のデータベースですべてのことを行う必要があります。しかし、すぐに私がdataType:ajaxに "json"を追加すると、PHPファイルで何も起こりません。私は少しgoogledといくつかの人々は、ブラウザの問題になる可能性があると述べたが、これまでのところ、Firefox、クロムまたはIEのいずれかで動作しません。私はjQueryの最新バージョンを使用しています。dataType: "json"は動作しません

<?php 
//Create variables and update database 

echo json_encode(array("id" => "$realid", "un" => "$username", "date" => "$date")); 
?> 

そして、これはAjaxコードです:

これは、PHPの内部で何が起こるかである私は、この上の無知だ

.ajax(
{ 
    url: 'UpdateComments.php', 
    type: 'POST', 
    dataType: "json", 
    data: 
    { 
     type: "add", 
     comment: $("#comment").val(), 
     id: videoID 
    }, 
    success: function (data) 
    { 
     //Get the data variables from json and display them on page 
    } 
}); 

、何かアドバイスをいただければ幸いです!

+0

...

<?php //at the very beginning start output buffereing ob_start(); // do your logic here // right before outputting the JSON, clear the buffer. ob_end_clean(); // now print echo json_encode(array("id" => $realid, "un" => $username, "date" => $date)); ?> 

今、すべての補足データ(JSON前)破棄され、あなたはそれが動作している必要がありますこのような何かをやってみてくださいあなたのサーバーから。 –

+0

contentType HTTPヘッダーが役に立ちます – Bergi

+1

返される内容は厳密にはJSONではないと思われます - PHPの前後にある空白をチェックするか、ファイル内に存在してはならない何かを調べます(ヒント:json_encodeの直後に 'die'を使用します)。 )。 JQueryでdataTypeを指定しないと、success =応答が返されます。あなたがするとき、成功=有効な応答を得て....また、あなたのPHPのバージョンをチェックすると、私はjson_encodeが以前のバージョンでは盗聴されたことを思い出すようです。 – Codecraft

答えて

6

一般的な問題は、JSONの前に「何か他のもの」が印刷されているかどうかです。が読めない場合(不可視)charです。放火犯/ネットパネルでAjaxの応答を確認して来るのか見

+0

ありがとう、これはトリックでした! – Glenn

0

jQueryでdataTypeを設定すると、実際にContent-Typeヘッダー属性が設定されます。おそらく、あなたのPHPスクリプトでは、このMIMEタイプを承認されたものとして宣言する必要があります。あなたがリクエストをしたときにコードがPHPスクリプトにも入るかどうか確認しましたか? Firefox、Chrome、またはIEで動作しないと、ブラウザの問題であるとは思わない。

AJAXリクエストでより良いパースペクティブを得るには、ajaxBeforeSend(イベント名がjQ docsを正しくチェックしているかどうかわからない)イベントを購読し、xhrオブジェクトを記録します。

0

問題を引き起こしている場合はdataTypeを使用しません。個人的にはデータ値としてオブジェクトを使用していません。

とにかく私はこれが助けてくれることを願っています。

$.ajax(
{ 
    url: 'UpdateComments.php', 
    type: 'POST', 
    data: 
    { 
     type: "add", 
     comment: $("#comment").val(), 
     id: videoID 
    }, 
    success: function (response) 
    { 
     //Get the data variables from json and display them on page 
     var data = $.parseJSON(response); 
     alert(data.id); 
    } 
}); 
1

私はあなたがのcon​​tentTypeを使用しなければならないデータ型を使用する場合、「JSONのための公式のインターネットメディアタイプは、アプリケーション/ JSONである」と考えています。

.ajax(
{ 
url: 'UpdateComments.php', 
type: 'POST', 
contentType: "application/json",//note the contentType defintion 
dataType: "json", 
data: 
{ 
    type: "add", 
    comment: $("#comment").val(), 
    id: videoID 
}, 
success: function (data) 
{ 
    //Get the data variables from json and display them on page 
} 
}); 
0

あなたは、問題の診断に役立つことができます任意のエラーについて、デバッグコンソールをチェックすると$アヤックスコール

$.ajax({ 
    ..., 
    error: function(xml, error) { 
    console.log(error); 
    } 
}); 

の一環として、エラーハンドラを定義してみます。

関連する問題