2011-07-31 10 views
0

JQuery 1.5.2を使用してサーバーにデータをアップロードする必要があります。これらのデータは、base64でエンコードされたイメージ、float値、および整数値でなければなりません。ここに私のコードは次のとおりです。 更新コード:JSONを使用して正常にアップロードした後にnull値が返されるのはなぜですか?

$.ajax({ 
    type: "POST", 
    datatype: "json", 
    url: "http://myURL.json", 
    data: { id: id, image: "jhbjh", lat: 2.6, lng: 3.4}, 
    success: function() { 
     alert('Successfully uploaded'); 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     alert('Error on upload: ' + textStatus + " thrown " + errorThrown); 
    } 
}); 

正常にアップロードされるだけパラメータは、私には奇妙なようだが、残りの値は、サーバ上のヌルされた整数値idです。上記のコードに見られるように、テストのために値を手動で変更しようとしましたが、まだnull値が返されます。サーバの開発者は、null値が私のコードの問題であることと、サーバーは、いくつかのtestings後に正常に動作することを主張し

data: { id: id, image: encodedImage, lat: latitude, lng: longitude}, 

:のように私のデータが見えたとき、私はnull値を取得します。私のエラーはどこですか?私の例のコードの一部であなたの答えを提供していただけますか?

答えて

1

いくつかのエラーがあります。まず、jsonを送信していますか?実際にjsonをWebサーバーに送信するのは非常にまれです。ですから、contentTypeを含む行を完全に削除してください。 (実際にjsonを送信しないと、追加のコードが必要になります)

第2に、ajax経由で画像を送信することはできません。私は画像で、あなたがアップロードしたファイルをユーザが意味すると仮定します。新しいブラウザのサポートが必要な場合を除き、この場合はajax経由で使用できるファイルAPIがあります。

ファイルをアップロードする必要がある場合は、非表示のiframeメソッドを使用してファイルをアップロードする必要があります。これを簡単にするために、jQuery Form Pluginを使用してください。

実際にjsonを送信している場合は、自分自身を文字列にエンコードし、processData: falseも含める必要があります。

+0

「contentType」問題を捕まえるために+1。しかし、イメージを再現すると、彼はイメージが "base64でエンコードされたイメージ"、つまり文字列であると述べました。 – gilly3

+0

@ gilly3彼は、 'データはそれが既に存在するのではなく、base64でエンコードされたイメージでなければならない 'と述べた。サーバーがそれを予期しているだけです。しかし、それは本当に明確ではありません。 – Ariel

+0

@Arielそれはすでにbase64データですので、問題ではないはずですか?彼女もそうです:-) – tasanoui

関連する問題