ホームページ ウェブフロントエンド jsチュートリアル Ajax フォームの送信とバックグラウンド処理に基づくシンプルなアプリケーション

Ajax フォームの送信とバックグラウンド処理に基づくシンプルなアプリケーション

May 23, 2018 pm 02:32 PM
ajax バックステージ 提出する

ここで、Ajax フォームの送信とバックグラウンド処理に基づいたシンプルなアプリケーションを紹介します。今からそれを皆さんと共有し、皆さんの参考にしてください。

まず、フォームの送信について説明します。フォームを送信するには、まずフォームのデータを収集する必要があります (検証については説明しません。jquery については次回に譲ります)。 html $("xxid").val() などの値を取得するのは簡単ですが、フォームが大量のデータを収集する場合、このようなフォームが多数ある場合、このメソッドを使用するのは間違いなく面倒です、そして録音では間違いを犯しやすいです。したがって、単純に収集ルールを定義して、サーバーに送信するデータ フォーム コントロールをマークし、マークされたデータを一緒に取得できます。

例として最も単純なスタイルの入力を見てみましょう 、格納される値は、対応するサーバー関連クラスの属性名です。このマークがあるとフロントでのデータの検索が容易になります。

次のコードのような一般的なメソッドを定義できます

getFormData: function(formid) {    
    var data = {};

    //获取TEXT文件内容
    $("#" + formid + " input[type=text]").each(function(i, o) {
      var jo = $(o);
      if (jo.attr("datafield")) {
        var str = jo.val();
        str = str.replace(" ", "");
        if (str !== "") {          
          data[jo.attr("datafield")] = jo.val();
        }
      }
    });
    return data;
}
ログイン後にコピー

これは、フォーム内のすべてのテキストを取得してデータオブジェクトに入れる簡単な方法です。他のフォームの値を取得する方法についても同様です。コントロールについては詳しく説明しませんが、原理は同様です。

次のステップは、ここで jquery で ajax を直接使用してサーバーにデータを送信することです。

var save = function(sender) {     
      $(sender).prop("disabled", true); //禁用按钮,防止重复发送
      var data = getFormData("form1");
      var jsonobj = { jsondata: data };
      var textdata = JSON.stringify(jsonobj);
      $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "xxxxx.aspx/Save",
        dataType: "json",
        data: textdata,
        success: function(msg) {
          if (msg.d == "1") {
            document.form1.reset();
            alert("保存成功!");           
          }
          else if (msg.d == "0") {
            alert("保存失败!");
          }
        },
        complete: function(jqXHR, textStatus) {
          $(sender).prop("disabled", false); //还原按钮
        }
      });
    }
ログイン後にコピー

ここの「xxxxx.aspx/Save」はajax処理ページで、もう1つはWebメソッドです。私たちは、顧客の動きが速すぎたり、サービスが遅すぎたり、クリックを繰り返したりすることを防ぐためにいくつかの作業を行いました。

このようなフォームデータの収集とサーバーへの返却が完了しました。ここでは、json2.js の JSON.stringify メソッドを使用して、オブジェクトを json 文字に均一に変換します。その利点は、json 文字列を自分で記述するために json の形式を考慮する必要がないことです。

その後、クライアントはデータを収集し、サーバーはデータを処理する必要があります。フロント デスクから取得するデータのキー (json キー) に、特定のデータ クラスのすべての属性を含めることはできません。そして、多くのデータ クラスがあり、それがどのクラスであるかを知るのはサーバーだけです。したがって、ここではヘルパー変換クラスを作成する必要があります。ここには別の問題があります。多くのデータ クラスが存在する可能性があります。それは落とし穴ではないでしょうか?したがって、クライアントからサーバーに送信されるデータ形式は、繰り返しのないキーと値のペアのセットであるため、バックグラウンド クラスにはさまざまな種類があります。少なくとも、入力パラメータが決定されると、関連するクラスが渡されます。関連するクラス?それがどのカテゴリであるかは、特定の背景収集方法を確認することによってのみ知ることができます。それでは、データ クラスに変換する必要がある Dictionary について考えを整理してみましょう。わかりませんが、この Dictionary のキー (key) は、このデータ クラスの属性セットのサブセットとみなされ、この Dictionary の値 (value) は、 ; は、このデータ クラス属性の値です。その方が扱いやすいでしょう。属性セットを取得するにはどうすればよいですか?反射。次のカテゴリのうちどれがありますか?とにかく、ジェネリック医薬品がそれを解決します。

これがコアコードです​​

public static T1 UpdateObjectByDic<T1>(T1 scrobj, IDictionary<string, string> sourceobject, bool ignoreCase)
     where T1 : new()
    {
      T1 result = scrobj;
      PropertyInfo[] pifresults = typeof(T1).GetProperties();
      foreach (var dic in sourceobject)
      {
        foreach (PropertyInfo pifresult in pifresults)
        {
          if (string.Compare(dic.Key, pifresult.Name, ignoreCase) == 0)
          {
           pifresult.SetValue(result, ChangeType(dic.Value, pifresult.PropertyType), null);
            break;
          }
        }
      }
      return result;
    }

    public static Object ChangeType(object value, Type targetType)
    {
      Type convertType = targetType;
      if (targetType.IsGenericType && targetType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
      {
        NullableConverter nullableConverter = new NullableConverter(targetType);
        convertType = nullableConverter.UnderlyingType;

      }
      return Convert.ChangeType(value, convertType);
    }
ログイン後にコピー

ここでの私のT1 scobjは、フォームを追加する場合は、新しいオブジェクトを渡し、注文を更新する場合は、元のフォームデータを入れます。渡してください。ちなみに、ChangeType メソッドは次のとおりです。その他、データ クラスの一部の属性 (int? DateTime? など) は例外が発生するため、属性を単純に変更しました。 (フロントのデータフィールドに対応する値) 大文字と小文字を扱うかどうかを確認します(通常は大文字と小文字は関係ありませんが、大文字と小文字を扱いたい場合はフロントの唾液に溺れると思います)。

これでバックグラウンド データ処理のコアが完成し、コードの呼び出し部分も掲載されます

[WebMethod(EnableSession = true)]
    public static string Save(Dictionary<string, string> jsondata)
    {
      string result = "0";
      Model.Project pro = ConvertHandle.UpdateObjectByDic< Model.Project>(jsondata,new Model.Project,true);      
      pro.CreatorID = BLL.Sys_User.GetCurUser().ID.ToString();
      pro.CreatorName = BLL.Sys_User.GetCurUser().Name;    
      prohandle.Insert(pro);
      result = "1"; 
      return result;
    }
ログイン後にコピー

これはバックグラウンド固有の処理メソッド呼び出しのコアの使用法です。prohandle.Insert(pro) はクラスをデータベースに保存します。pro .CreatorID、pro.CreatorName プロジェクトに関するその他の情報については、ここでは触れません。この時点で、フロントエンドのデータ収集とフォームのバックグラウンド処理は、保存部分を除いてすべて完了しています(笑)。

最後に、この記事は単なる単純なアプリケーションです。前述したフロントエンド コレクションと同様に、多くのフロントエンド JS フレームワークがすでに開発されており、バックグラウンド処理は私のものよりもはるかに包括的です。フロントデスクは単に収集されており、多くのサードパーティフレームワークには完全なシステムがありますが、現時点でそれほど多くのコントロールがない場合、このパスを簡単に実装できるでしょうか。もちろん、車輪を再発明しないことを強くお勧めしますが、車輪の中心となる機能と原理を理解する必要があります。

上記は私があなたのためにまとめたものです。

関連記事:

Ajax は都市名でデータを取得します

MVCがブートストラップを満たした後のAjaxフォーム検証

AJAXリクエストキュー実装

以上がAjax フォームの送信とバックグラウンド処理に基づくシンプルなアプリケーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

バックグラウンドログインの問題の解決策を明らかにする バックグラウンドログインの問題の解決策を明らかにする Mar 03, 2024 am 08:57 AM

Discuz のバックグラウンド ログイン問題の解決策が明らかになりました。特定のコード サンプルが必要です。インターネットの急速な発展に伴い、Web サイトの構築がますます一般的になってきました。Discuz は、一般的に使用されるフォーラム Web サイト構築システムとして、次のユーザーに好まれています。多くのウェブマスター。しかし、その強力な機能ゆえに、Discuz を使用する際にバックグラウンドでのログインの問題などの問題が発生することがあります。本日は、Discuz のバックグラウンド ログインの問題の解決策を明らかにし、具体的なコード例を提供します。

jQuery AJAX リクエストで発生した 403 エラーを解決する方法 jQuery AJAX リクエストで発生した 403 エラーを解決する方法 Feb 20, 2024 am 10:07 AM

タイトル: jQuery AJAX リクエストの 403 エラーを解決する方法とコード例。403 エラーは、サーバーがリソースへのアクセスを禁止するリクエストを指します。このエラーは通常、リクエストにアクセス許可がないか、サーバーによって拒否されたために発生します。 jQueryAJAX リクエストを行うときにこのような状況に遭遇することがありますが、この記事ではこの問題の解決方法とコード例を紹介します。解決策: 権限を確認します。まず、要求された URL アドレスが正しいことを確認し、リソースにアクセスするための十分な権限があることを確認します。

WordPress バックエンドのコードの文字化けが心配ですか?これらの解決策を試してください WordPress バックエンドのコードの文字化けが心配ですか?これらの解決策を試してください Mar 05, 2024 pm 09:27 PM

WordPress バックエンドのコードの文字化けが心配ですか?これらの解決策を試してください。具体的なコード例が必要です。Web サイト構築で WordPress が広く使用されるようになったことで、多くのユーザーが WordPress バックエンドでコードが文字化けする問題に遭遇する可能性があります。このような問題が発生すると、バックグラウンドの管理インターフェースが文字化けして表示され、ユーザーに多大な迷惑をかけてしまいます。この記事では、WordPress バックエンドでの文字化けのトラブルを解決するための一般的な解決策をいくつか紹介します。 wp-config.php ファイルを変更し、wp-config を開きます。

jQuery AJAXリクエスト403エラーを解決する方法 jQuery AJAXリクエスト403エラーを解決する方法 Feb 19, 2024 pm 05:55 PM

jQuery は、クライアント側の開発を簡素化するために使用される人気のある JavaScript ライブラリです。 AJAX は、Web ページ全体をリロードせずに、非同期リクエストを送信し、サーバーと対話するテクノロジーです。ただし、jQuery を使用して AJAX リクエストを行うと、403 エラーが発生することがあります。 403 エラーは通常、セキュリティ ポリシーまたは権限の問題が原因で、サーバーによってアクセスが拒否されたエラーです。この記事では、jQueryAJAX リクエストで 403 エラーが発生した場合の解決方法について説明します。

MySQL トランザクション処理: 自動送信と手動送信の違い MySQL トランザクション処理: 自動送信と手動送信の違い Mar 16, 2024 am 11:33 AM

MySQL トランザクション処理: 自動送信と手動送信の違い。MySQL データベースでは、トランザクションは一連の SQL ステートメントです。すべての実行が成功するか、すべての実行が失敗するかのいずれかで、データの一貫性と整合性が保証されます。 MySQL では、トランザクションは自動送信と手動送信に分けられ、その違いはトランザクション送信のタイミングとトランザクションの制御範囲にあります。以下では、自動送信と手動送信の違いを詳しく紹介し、具体的なコード例を示して説明します。 1. MySQL が表示されない場合は自動的に送信する

Ajaxを使用してPHPメソッドから変数を取得するにはどうすればよいですか? Ajaxを使用してPHPメソッドから変数を取得するにはどうすればよいですか? Mar 09, 2024 pm 05:36 PM

Ajax を使用して PHP メソッドから変数を取得することは、Web 開発では一般的なシナリオであり、Ajax を使用すると、データを更新せずにページを動的に取得できます。この記事では、Ajax を使用して PHP メソッドから変数を取得する方法と、具体的なコード例を紹介します。まず、Ajax リクエストを処理し、必要な変数を返すための PHP ファイルを作成する必要があります。以下は、単純な PHP ファイル getData.php のサンプル コードです。

jQuery AJAX エラー 403 の問題を解決するにはどうすればよいですか? jQuery AJAX エラー 403 の問題を解決するにはどうすればよいですか? Feb 23, 2024 pm 04:27 PM

jQueryAJAX エラー 403 の問題を解決するにはどうすればよいですか? Web アプリケーションを開発する場合、非同期リクエストを送信するために jQuery がよく使用されます。ただし、jQueryAJAX の使用時に、サーバーによってアクセスが禁止されていることを示すエラー コード 403 が発生する場合があります。これは通常、サーバー側のセキュリティ設定が原因ですが、回避する方法があります。この記事では、jQueryAJAX エラー 403 の問題を解決する方法と具体的なコード例を紹介します。 1.作る

PHP と Ajax: オートコンプリート提案エンジンの構築 PHP と Ajax: オートコンプリート提案エンジンの構築 Jun 02, 2024 pm 08:39 PM

PHP と Ajax を使用してオートコンプリート候補エンジンを構築します。 サーバー側スクリプト: Ajax リクエストを処理し、候補を返します (autocomplete.php)。クライアント スクリプト: Ajax リクエストを送信し、提案を表示します (autocomplete.js)。実際のケース: HTML ページにスクリプトを組み込み、検索入力要素の識別子を指定します。

See all articles