1

jquery 1.4でuploadifyを使用して画像をアップロードしています。ファイルをアップロードする php スクリプトで、次のように出力します。

$json_response['status'] = "true";
$json_response['file'] = $_FILES;
echo Zend_Json_Encoder::encode($json_response);

JavaScript では (要するに):

$('#images_upload_file').uploadify({

    onComplete: function(event, queueID, fileObj, response, data) {

            console.log("upload complete");
            console.log(response);

「応答」は常に空です。イベント、queueID、fileObj、およびデータがすべて正しく入力されます。これを修正する方法を知っている人はいますか?

さらに情報が必要な場合はお知らせください。PS: 私たちのコードは問題なく画像をアップロードします。jquery 1.4 にアップグレードして以来、応答は常に空です。

4

2 に答える 2

1

私は常にjson2.jsjsonデータを処理するために使用します。このライブラリには、データが適切な json 形式でない場合の安全メカニズムがあります。http://json.orgから入手できます。サイトから直接使用するのではなく、必ず js ファイルをダウンロードしてください。

私のコードは常に次のようになります。

onComplete : function (event, queueID, fileObj, response, data) {
  //process response
  try {
    var r = JSON.parse(response);
    //process the JSON data, ex
    console.log(r.status); 
  }
  catch(e) {
    //not json or bad format, do something about it
    alert("cannot parse data as json!");
  }
}

私が使用する理由json2.jsは、私の php スクリプトにはセッション チェックがあり、セッションが受け入れられない場合はリダイレクトされるためです。フィルターモジュールを使用してページに入る前に行われたため、AJAXリクエストなのか、通常のページアクセスなのかを確認できません。必要なセッションがページのルールを満たさない場合、すぐにリダイレクトされるため、完全な Web ページが返されます。

これにより、応答が有効な json 形式ではなくなります。json2.jsI can handle it in blockを使用してからcatch、現在のページをリロードするなど、別のアクションを実行します。これは私がいつも使っているもので、いつも私のために働いています。

参考までに、json2.js必要ではなく、jQuery とはまったく関係ありません。

于 2010-01-17T17:16:36.197 に答える
0

PHP スクリプトで error_reporting がオンになっていますか?

設定により出力されないのは、致命的なエラー (Zend_Json_Encoder クラスを読み込めないなど) ではないerror_reportingでしょうか?

于 2010-01-16T22:12:54.533 に答える