0

ここajaxupload.jsから使用していますが、ファイルがアップロードされていることがわかります。しかし、私は応答を取得しています。<pre style="word-wrap: break-word; white-space: pre-wrap;">{"id":"006","path":"006.png"}</pre>

応答はちょうどあるはずだと思います{"id":"006","path":"006.png"}が、何らかの理由でそれがラップされた<pre>ため、Uncaught SyntaxError: Unexpected token <.

私はSpring MVC 3、Tomcatを使用しています。私はjava.io.Writer応答を次のように書くために使用していますwriter.write(json.toString());

誰かがこのエラーとその解決方法を理解するのを手伝ってくれますか?

ありがとう。

更新

コード:

<form id="app-form" class="cols" action="#" method="POST">
    <fieldset class="w50">                              
        <!--  set of form fields -->
    </fieldset>   
    <fieldset class="w50">                              
        <button id="uploadButton" class="csbutton-grey" >Upload</button>
        <ul id="locationImages"></ul>
    </fieldset>
<div style="float: left;">
    <button type="submit" class="cool-button">Submit</button>
</div>
</form>


$(document).ready(function(){
    var button = $('#uploadButton'), interval;

    new AjaxUpload(button, {
        action: 'uploadImage', 
        name: 'qqfile',
        responseType: "json",
        onSubmit : function(file, ext){
            this.disable();
            console.log("file - " + file);
            console.log("ext - " + ext);
            if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){
                alert('Error: invalid file extension');
                return false; 
            }
            else {
                $.ajax({
                    type:"GET",
                    url:"file",
                    data:'file='+file,
                    success:function(data, textStatus, jqXHR){
                        console.log(jqXHR.status);
                        console.log(data);
                    },
                    error:function(jqXHR, textStatus, errorThrown) {
                        console.log(jqXHR.status);
                    },
                });                 
            }
        },
        onComplete: function(file, response){
            this.enable();
            console.log("file - " + file);
            console.log("response.id - " + response.id + ", response.path - " + response.path);
            $('<li></li>').appendTo('#locationImages').text(file);                      
        }
    }); 
});
4

2 に答える 2

1

JSON をクライアントに送信する場合は、Jacksonを使用します。Spring MVC はそれをネイティブでサポートしていました。次のような Bean クラスを作成します。

public class Result{
private String id;
private String path;
public Result(String id, String path){
this.id=id;this.path=path;}
public Result(){}
// add getters and setters
}

次のようなコントローラーメソッドを作成します

@ResponseBody // this is important
@RequestMapping("/path/to/mapping")
public Result someMethodName(SomeParameter param1, SomeParameter param2){
    // do something here
    return new Result(id, path);
}

クラスパスに Jackson があり、Spring アプリを構成している限り<mvc:annotation-config />、これにより、応答オブジェクトが正しい JSON (正しい MIME タイプを含む) に自動的にシリアル化されます。

于 2012-06-05T06:23:56.890 に答える
1

AjaxUpload のようにresponseTypeプロパティを設定しましたか?json

于 2012-06-05T06:55:53.220 に答える