Ajax -- フォームマッピング

坏嘻嘻
リリース: 2018-09-13 17:42:22
オリジナル
1588 人が閲覧しました

この記事の例では、Python マッピング リストについて説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。

1 フォームのシリアル化をバックグラウンド エンティティ オブジェクトにマッピングする際に、多くの回り道が行われました。これを要約すると次のようになります。

フォーム:

<form  id="form01" enctype="multipart/form-data">
        <input type="text" name="name" id="name"/> 
        <input type="text" name="password" id="password"/>
        <input type="button" value="确认" onclick="upload()">
    </form>
ログイン後にコピー

JS メソッド:

function upload() {
        $.ajax({
            type:"POST",
            url : &#39;<%=basePath%>upload01.do&#39;, //用于文件上传的服务器端请求地址
            data : formToJson($("#form01")),
            contentType: &#39;application/json; charset=utf-8&#39;,
            success : function(data, status) //服务器成功响应处理函数
            {
                alert(data);
            },
            error : function(data, status, e)//服务器响应失败处理函数
            {
                alert(e);
            }
        });
    }    //将表单数据转化为JSON数据 form为表单对象,如$("#form01"),返回序列化数据
    function formToJson(form) {
        var data = form.serialize();
        data = decodeURIComponent(data, true);//防止中文乱码  
        data = data.replace(/&/g, "&#39;,&#39;");
        data = data.replace(/=/g, "&#39;:&#39;");
        data = "({&#39;" + data + "&#39;})";
        obj = eval(data);
        obj=JSON.stringify(obj);        return obj;
    }
ログイン後にコピー

フォームをシリアル化するために、serialize() を直接使用しないのはなぜでしょうか。まだこの悩みはあります。それを実行すると、$("#form").serialize() は name=1&password=1 の形式を返しました。jquery がこのようにシリアル化する方法がわかりません。長い間オンラインで検索しましたが、役に立ちませんでした。 http://www.cnblogs.com/suruozhong/p/6256457.html というブログを見て、この奇妙なシリアル化結果を文字を変更して JSON 形式に変換すると、OK、ブロガーさん、ありがとう。
バックエンド コントローラー:

@RequestMapping(value = "upload01", method = RequestMethod.POST)    public void uploadText01(
            HttpServletRequest request,
            HttpServletResponse response,
            @RequestBody User user) {
        System.out.println("run in");
    }
ログイン後にコピー

フロントエンドの JSON データがオブジェクトにマッピングされるように、オブジェクトの前に @RequestBody が追加されていることに注意してください。そうしないと、一連のエラーが発生します。レポート:

Unsupported Media TypeContent type &#39;application/json;charset=UTF-8&#39; not supported
ログイン後にコピー

ただし、エンティティ名がタグ内の name 属性値と一致しないため、このエラーが発生する可能性があります。
フォームを背景エンティティにマッピングできない理由は、シェルフ パッケージがないことが原因である可能性があります。

<!-- JSON支持 -->
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <!--指定jdk版本 -->
            <classifier>jdk15</classifier>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
        </dependency>
ログイン後にコピー

2 メソッドでフォームを直接送信してください。

<form id="form01" enctype="multipart/form-data">
        <input type="text" name="name" id="name" /> <input type="password"
            name="password" id="password" /> <input type="button"
            onclick="doConfirmForm()" value="确认">
    </form>
ログイン後にコピー
function doConfirmForm(){
        var form01=$("#form01");
        form01.submit();
    }
ログイン後にコピー

3 フォーム フォーム。 FormData に変換され、JSON が送信されます

<body>
    <form id="form">
            name:<br>
        <input type="text" name="name">
        <br>
         password:<br>
        <input type="text" name="password">
    </form> </body><script type="text/javascript" src="./jquery-1.10.2.js"></script><script type="text/javascript">

            var formData = new FormData($("#form")[0]);
            formData.append("createDate",new Date());

            $.ajax({
                type: "POST",
                data: convertFormDataToJson(formData),
                url: "http://localhost:80/test/requestBody",
                contentType: &#39;application/json; charset=utf-8&#39;,
                dataType: "json",
                success: function(result) {
                    console.log(result);
                }
            });            function convertFormDataToJson(formData) {
                var objData = {};                for (var entry of formData.entries()){
                    objData[entry[0]] = entry[1];
                }                return JSON.stringify(objData);
            }    </script>
ログイン後にコピー

関連する推奨事項:

#JSP フォーム送信送信マッピング サーブレット問題_html/css_WEB-ITnose

#Python マッピング リストの分析例

以上がAjax -- フォームマッピングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート