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

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

ただいまの
回答率

90.50%

  • JavaScript

    19250questions

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

  • C#

    8504questions

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

  • ASP.NET

    598questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 6,032

GiveAHand

score 268

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

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

namespace sample.namespace
{

    [WebService(Namespace = "http://sample.com/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class SampleClass : System.Web.Services.WebService
    {

        [WebMethod]
        public string SampleMethod(string name)
        {
           return "Hello World: " + name;
        }
}

この中の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>
<head>
</head>
<body>
<button id="sample">SampleMethod呼び出し</button>
<body>
</html>

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+3

参考にされている記事の、前者は (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/25 19:01

    SurferOnWww様

    いつもながら、素晴らしい回答に脱帽です。
    ただ、今回の場合、私自身がajaxというものがよくわかっていないので、教えて頂いたリンクを元に、勉強してみます。

    ありがとうございました!

    キャンセル

  • 2017/03/26 23:03

    「JavaScript」=「AJAX」ではありませんが、表題にあるように ASP.NET の Wed サービスを JavaScript で呼び出すというと、質問者さんが参考にされた記事にあるように ASP.NET AJAX を使うか、jQuery.ajax を使うという発想になります。(少なくとも自分は)

    > 私自身がajaxというものがよくわかっていないので

    とのことですが、質問者さんの言う「JavaScriptからWebMethodを呼び出す」というのは具体的にどういうことを考えていたのでしょうか?

    質問する際は、全体的なシナリオを含めてやりたいことを書いていただけると、より質問者さんの求めている回答に近いものが出せるかもしれませんので、次回からはそのようにすることをお勧めします。

    キャンセル

  • 2017/03/27 04:01

    SurferOnWww様

    お世話になります。

    >質問する際は、全体的なシナリオを含めてやりたいことを書いていただけると、より質問者さんの求めている回答に近いものが出せるかもしれませんので、次回からはそのようにすることをお勧めします。

    あぁ、なるほど!
    全体的なシナリオとしましては、WebMethodを一定数連続で呼び出すような、簡単な負荷テストをしたいという感じです。

    キャンセル

  • 2017/03/27 09:58

    > WebMethodを一定数連続で呼び出す

    JavaScript の setInterval を使ってはいかがですか?

    キャンセル

  • 2017/03/28 14:40

    SurferOnWww様

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

    キャンセル

同じタグがついた質問を見る

  • JavaScript

    19250questions

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

  • C#

    8504questions

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

  • ASP.NET

    598questions

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