0

SpringMVCのメソッドをマップするURLにAjaxリクエストを送信するための次のjsコードがあります。

function update(id)
{
    $.ajax({
        datatype:"json",
        type: "put",
        url: "/wagafashion/ajax/TempAjax.htm",
        data: "id=" + id+"&t="+new Date().getTime(),
        success: function(response)
        {
            alert(response);                        
        },
        error: function(e)
        {
            alert('Error: ' + e);
        }
    });
}

以下は、ファイルブラウザとボタンのみを備えた単純なSpringフォームです。

<form:form id="mainForm" name="mainForm" method="post" action="Temp.htm" enctype="multipart/form-data" commandName="tempBean">
    <input type="file" id="myFile" name="myFile"/>
    <input type="button" id="btnSubmit" name="btnSubmit" onclick="update(1);" value="Submit"/>
    <!--The js function is called when this button is clicked supplying 1 as id.-->
</form:form>

そのボタンが押されると、Springコントローラーの次のメソッドが呼び出されます。

@RequestMapping(method={RequestMethod.PUT}, value={"ajax/TempAjax"})
public @ResponseBody String update(HttpServletRequest request, HttpServletResponse response)
{
    System.out.println(ServletFileUpload.isMultipartContent(request));
    return "Message";
}

ただし、メソッド呼び出しはをServletFileUpload.isMultipartContent(request)返しますfalse


次のようにメソッドを変更すると、

@RequestMapping(method={RequestMethod.PUT}, value={"ajax/TempAjax"}, headers={"content-type=multipart/form-data"})
public @ResponseBody String update(@RequestParam MultipartFile file, HttpServletRequest request, HttpServletResponse response)
{
    System.out.println(ServletFileUpload.isMultipartContent(request));
    return "Message";
}

jsコードのエラーセクションは常にアラートを出しError: [object Object]ます。POSTこの場合、メソッドを使用しても同じことが起こります。

マルチパートコンテンツをAjax経由で渡す方法(正確にはPUTメソッドを使用)?

4

1 に答える 1

0

これがマルチパートファイルをサーバーに投稿する方法を本当に理解できませんか? データには ID と時刻だけが含まれます。

次のようなものを試してください:

function update(id)
{
    $.ajax({
        datatype:"json",
        type: "put",
        url: "/wagafashion/ajax/TempAjax.htm",
        data: $('#mainForm').serialize(),
        success: function(response)
        {
            alert(response);                        
        },
        error: function(e)
        {
            alert('Error: ' + e);
        }
    });
}
于 2012-12-01T00:39:25.103 に答える