私は Web 開発の初心者で、クライアント側から SQL データベースを更新する安全な方法を探しています。または、(Facebook ボタンのように) Web ページを更新せずにデータベースを更新する他の説明を探しています。私は多くのことを検索し、Web サービスを使用してそれを行うことができることを発見しました。ありがとう..
3 に答える
クライアント側からデータベースを更新するために ajax を使用できます。Web ページのボタンをクリックすると、そのページのクリック イベントを JavaScript または jQuery で取得し、ajax を介してデータベースの更新を実行できます。以下のコードを参照してください。
イベントをキャッチする場合(私のボタンIDはbutton1のように):
$('#<%=button1.ClientID%>').click(function{
$.ajax({
type: "POST",
url: "default.aspx/UpdateDatabase",
data: "{'textboxvalue':'" + $('<%=textbox1.ClientID%>').val() + "'}'
contentType: "application/json;charset=utf-8",
datatype: "json",
success: UpdateDone
});
});
上記のコードでは、textbox1 から Default.aspx ページの関数 UpdateDatabse に 1 つの値を渡しました (この関数を [WebMethod] として定義してください)。次に、この関数で更新を行い、文字列またはブール値を返して、更新が完了したと判断できるようにします。成功した値は、関数が正常に実行された場合に実行される関数の名前であるため、その関数を JavaScript または jQuery のように定義します。
function UpdateDone(response)
{
if(response.d == 'done')
{ alert('Update is done'); }
else
{ alert('Sorry Update not done'); }
}
上記のコードはポストバックを行いません。値がデータベースで更新されていることがわかります。C# ページで作成する関数は WebMethod としてマークしてください。これは静的メソッドになり、JavaScript だけがその関数を見つけることができます。
これで問題が解決することを願っています。
使用するajaxという用語は正しいですが、すでに少し古いものです。ブロックの新しい子供たちはSPAと呼ばれ、SPAはシングルページアプリケーションの略です。
それはあなたが極端に達成したいことをします:それ以上のページの更新はありません。だからそれは始めるのに良い方法のようです
これがASP.NETシングルページアプリケーションのホームページです
私のアドバイスは、この目標をはるかに速く達成するのに役立つ(多くの)javascriptフレームワークの1つを調査して時間を費やすことです。javascriptを手作業でコーディングし、ブラウザ間で機能させるのは大変な作業です。ASP.NETチームは問題を解決するためにupshot.jsを選択しますが、それは良い選択のようです。
ここからスクリーンショットを撮る
ASP.NET MVC 3 で JSON を使用して AJAX を実行することが、AJAX 要求を実行する最も簡単な方法であることがわかりました。次に、要求を処理し、Entity Framework (EF) を介してデータベースを更新する特定のアクション メソッドを作成できます。
基本的に、JSON で更新する必要があるデータのみを渡します。そこから、MVC アクションは JSON を受け取り、EF を使用して DB レコードを検索し、変更を適用/保存します。AJAX を使用して、データがユーザー用に保存されたことを確認するフィールドを更新できる成功メッセージで応答することもできます (最初の ajax 要求と応答します。)
これにより、ページを更新せずにリクエストを送信できます。すべての DB アクセス コードは、アクション メソッドでサーバー側になります。
この例は、json リクエストを行う方法を示しています。Create メソッドに追加のコードを追加して、エンティティ フレームワーク (または選択したデータベース ツール) と対話し、渡されたパラメーターに基づいてレコードを更新することで、これを変更しますPerson person
(MVC が json データを変換するという非常に優れた処理を行ったことに注意してください)。素敵なPerson
クラスに!)
http://juuristr.com/blog/2011/08/posting-json-data-to-aspnet-mvc-3-web/
ユーザーが Web フォームに入力するデータが機密情報である場合は、json リクエストを送信する前にデータを暗号化する必要があります。個人的には、SSL を使用するように Web サイトをセットアップするだけです。自分で調理したものは、おそらく SSL ほど安全ではありません。
Create メソッドに追加するコードは、次のようになります。
//Find the person that they are attempting to edit
Person currentPerson = db.Persons.Find(person.PersonKey);
//update the database fields based on the submitted data(I would probably actually use AutoMapper for this
currentPerson.Name = person.Name;
currentPerson.DateOfBith = person.DateOfBirth;
//etc.
db.SaveChanges();
//compose a JSON response object indicating success, you would want to combine this with a try catch in the above to reply regarding failures as well