質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

18480閲覧

JavaScriptからWebMethodを呼び出すサンプル的なものが欲しいです。。。

GiveAHand

総合スコア286

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

1グッド

1クリップ

投稿2017/03/23 22:35

C#のWebアプリケーションとして作成したWebMethodを外部のHTML内に記述したJavaScriotから呼び出したいと思っています。

C#のWebメソッドはこのようなものです。
Windows 2012 Server R2のIIS 8.5上でWebアプリケーションとして動作させます。

C#

1namespace sample.namespace 2{ 3 4 [WebService(Namespace = "http://sample.com/")] 5 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 6 [System.ComponentModel.ToolboxItem(false)] 7 public class SampleClass : System.Web.Services.WebService 8 { 9 10 [WebMethod] 11 public string SampleMethod(string name) 12 { 13 return "Hello World: " + name; 14 } 15}

この中のSampleMethodを呼び出すHTMLファイルを作成したいのですが、いろいろ調べますと、

JavaScript から WebMethod を呼び出す方法
http://d.hatena.ne.jp/fyts/20071016/webmethod

JavaScriptからASP.NETのWebMethod(PageMethod)を呼び出す方法
http://little-braver.com/162/

などの参考が見つかるのですが、これらはどうもあくまでもASP.netプロジェクト内でJavaScriptを使ってメソッドを呼び出す為の方法のように思えます。

上記のようなWebMethodを、全くの外部の、独立したHTMLファイル内にJavaScriptを記述して、呼び出すのに、何かサンプルHTML的なものをご教授願えないでしょうか?

例えば、

HTML

1<html> 2<head> 3</head> 4<body> 5<button id="sample">SampleMethod呼び出し</button> 6<body> 7</html>

このような形式で、ASP.netのWebメソッドを呼び出すには、どのように記述したらいいのでしょうか?

Nagkei10👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

参考にされている記事の、前者は (1) Web サービス(.asmx)のクラスに ScriptService 属性を付与して Web サービスメソッドを JavaScript から呼び出せるようにしたもの、後者は (2) ページ(.aspx.cs)のメソッドを public static にして WebMethod 属性を付与し JavaScript から呼び出せるようにしたものてす。

質問者さんは (1), (2) のどちらを使いたいか分かりませんが、どちらも JavaScript で呼び出せます。つまり、記事のように ScriptManager を利用する ASP.NET AJAX を使わなくても、jQuery.ajax などでも呼び出せます。

自分のブログで何ですが、以下の記事は (1) の例で、Web サービスメソッドの呼び出しに ASP.NET AJAX を使っています。

ASP.NET AJAX と Web サービス
http://surferonwww.info/BlogEngine/post/2011/06/04/ASPNET-AJAX-and-Web-Service.aspx

それらの Web サービスメソッドには一切手を加えず、jQuery.ajax で呼び出すようにした例が以下の記事にありますので見てください。

jQuery AJAX と Web サービス
http://surferonwww.info/BlogEngine/post/2011/06/04/jQuery-AJAX-and-Web-Service.aspx

以下の記事は (2) の例で、Web サービスメソッドの呼び出しに ASP.NET AJAX を使う方法と、jQuery.ajax を使う方法の両方が書いてあります。

ASP.NET AJAX でページの静的メソッド呼び出し
http://surferonwww.info/BlogEngine/post/2012/08/18/aspnet-ajax-client-script-to-call-server-side-static-method-in-page.aspx

なお、(1), (2) いずれも ajax を使っているので、基本的にクロスドメインでは呼び出せません。クロスドメインの場合は、以下の記事にあるような対応が必要になります。

JavaScript のクロス ドメイン (Cross-Domain) 問題の回避と諸注意
https://blogs.msdn.microsoft.com/tsmatsuz/2011/06/24/jsonp-cross-domain/

上記の記事の対応策の一つ CORS (Cross-Origin Resource Sharing) の具体例が以下の記事にありますので、必要なら見てください。表題に WCF と書いてありますが、Web サービスでも同じ対応で可能なはずです。

クロスドメインの WCF サービス
http://surferonwww.info/BlogEngine/post/2016/12/27/wcf-service-in-cross-domain.aspx

投稿2017/03/24 03:13

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GiveAHand

2017/03/25 10:01

SurferOnWww様 いつもながら、素晴らしい回答に脱帽です。 ただ、今回の場合、私自身がajaxというものがよくわかっていないので、教えて頂いたリンクを元に、勉強してみます。 ありがとうございました!
退会済みユーザー

退会済みユーザー

2017/03/26 14:03

「JavaScript」=「AJAX」ではありませんが、表題にあるように ASP.NET の Wed サービスを JavaScript で呼び出すというと、質問者さんが参考にされた記事にあるように ASP.NET AJAX を使うか、jQuery.ajax を使うという発想になります。(少なくとも自分は) > 私自身がajaxというものがよくわかっていないので とのことですが、質問者さんの言う「JavaScriptからWebMethodを呼び出す」というのは具体的にどういうことを考えていたのでしょうか? 質問する際は、全体的なシナリオを含めてやりたいことを書いていただけると、より質問者さんの求めている回答に近いものが出せるかもしれませんので、次回からはそのようにすることをお勧めします。
GiveAHand

2017/03/26 19:01

SurferOnWww様 お世話になります。 >質問する際は、全体的なシナリオを含めてやりたいことを書いていただけると、より質問者さんの求めている回答に近いものが出せるかもしれませんので、次回からはそのようにすることをお勧めします。 あぁ、なるほど! 全体的なシナリオとしましては、WebMethodを一定数連続で呼び出すような、簡単な負荷テストをしたいという感じです。
退会済みユーザー

退会済みユーザー

2017/03/27 00:58

> WebMethodを一定数連続で呼び出す JavaScript の setInterval を使ってはいかがですか?
GiveAHand

2017/03/28 05:40

SurferOnWww様 なるほど。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問