ホームページ バックエンド開発 PHPチュートリアル Ajax フォーム送信とバックグラウンド処理の簡単な例

Ajax フォーム送信とバックグラウンド処理の簡単な例

Jan 12, 2018 pm 01:26 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 フレームワークがすでに開発されており、バックグラウンド処理は私のものよりもはるかに包括的です。フロントデスクは単に収集されており、多くのサードパーティフレームワークには完全なシステムがありますが、現時点でそれほど多くのコントロールがない場合、このパスを簡単に実装できるでしょうか。もちろん、車輪を再発明しないことを強くお勧めしますが、車輪の中心となる機能と原理を理解する必要があります。

関連するおすすめ:

JQuery は PHP_jquery の AJAX フォーム送信インスタンスを作成します

Laravel で Vue.js を使用して Ajax フォーム検証インスタンスを実装します

PHP でセッション トークンを使用して、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の 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 のバックグラウンド ログインの問題の解決策を明らかにし、具体的なコード例を提供します。

WIN10サービスホストの動作プロセスがCPUを過剰に占有している WIN10サービスホストの動作プロセスがCPUを過剰に占有している Mar 27, 2024 pm 02:41 PM

1. まず、タスクバーの空白スペースを右クリックして[タスクマネージャー]オプションを選択するか、スタートロゴを右クリックして[タスクマネージャー]オプションを選択します。 2. 開いたタスク マネージャー インターフェイスで、右端の [サービス] タブをクリックします。 3. 開いた[サービス]タブで、下の[サービスを開く]オプションをクリックします。 4. 表示される[サービス]ウィンドウで、[InternetConnectionSharing(ICS)]サービスを右クリックし、[プロパティ]オプションを選択します。 5. 表示されたプロパティ画面で[プログラムから開く]を[無効]に変更し、[適用]をクリックして[OK]をクリックします。 6. スタートロゴをクリックし、シャットダウンボタンをクリックして[再起動]を選択し、コンピュータの再起動を完了します。

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 20, 2024 am 10:07 AM

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

PHP で特殊文字を処理し、一重引用符を変換する方法を学習します。 PHP で特殊文字を処理し、一重引用符を変換する方法を学習します。 Mar 27, 2024 pm 12:39 PM

PHP 開発のプロセスでは、特殊文字の処理が一般的な問題になります。特に文字列処理では、特殊文字がエスケープされることがよくあります。その中でも、特殊文字を一重引用符に変換することは比較的一般的な要件です。これは、PHP では一重引用符が文字列をラップする一般的な方法であるためです。この記事では、PHP での特殊文字変換シングルクォーテーションの扱い方と具体的なコード例を説明します。 PHP では、特殊文字には一重引用符 (')、二重引用符 (")、バックスラッシュ () などが含まれますが、これらに限定されません。

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

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

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

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

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

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

See all articles