1

価格の範囲で jquery スライダーを実装したいのですが、jquery を使用してページ Web メソッドを呼び出そうとしますajaxが、Web ページ メソッドの場合は機能しませんが、ajax 呼び出しの URL 属性を a に変更するだけで、webservice完全に呼び出されます。私は数時間からこれを試していますが、この背後にあるロジックは見つかりません。ここに私のコードがあります

<script type="text/javascript">
        var startPosition;
        $(document).ready(function () {          
            var hdnMinPrice = 142;
            var hdnMaxPrice = 969;
            $("#slider").slider(
              {
                  min: hdnMinPrice,
                  max: hdnMaxPrice,
                  range: true,
                  values: [hdnMinPrice, hdnMaxPrice],
                  step: 50,
                  slide: function (event, ui) {
                      $('#lbl').text(ui.values[0] + ' - ' + ui.values[1]);

                  },
                  start: function (event, ui) {
                      startPosition = ui.value;
                      //alert('Slider started at: ' + ui.value);
                  },
                  stop: function (event, ui) {                     
                      $.ajax({
                          type: "POST",
                          //url: SearchResult.aspx/FilterByPrice",                                                    
                          url: "WebService.asmx/InsetSubscriber",
                          data: "{email: '250@yahoo.com'}",
                          contentType: "application/json; charset=utf-8",
                          dataType: "json",
                          success: function (msg) {
                              alert('Thanks');
                              // Do something interesting here.
                          }
                      });                     
                      return false;
                  }
    });
        });
    </script>

コメントアウトされた URL オプションはページ Web メソッドであり、以下は Web ページ メソッドの定義です。

 [WebMethod]

    public void FilterByPrice(string email)
    {
        Response.Write("min" + email);
        //Response.Write("max" + max);
    }

ここで、Webサービスメソッドは次のとおりです。これは機能しています:

[WebMethod]
    public void InsetSubscriber(string email)
    {
        DALSubscriber objSubscriber = new DALSubscriber();
        objSubscriber.InsertSubscriber(email);

    }

このコード セグメントの後で、もう一度質問を繰り返します。Web サービス メソッドを使用する同じメソッドが jquery ajax 呼び出しで実行されているページ Web メソッドが機能しない

4

3 に答える 3

2

これは、PageMethodsがページ上で静的でなければならないためです。

これを試して:

[WebMethod]
public static void FilterByPrice(string email)
{
    // Use HttpContext.Current.Response instead
    // Response.Write("min" + email);
    //Response.Write("max" + max);
}
于 2012-07-29T18:28:42.423 に答える
1

httpmodule セクションで web.config を確認することをお勧めします。Web ページ メソッドが動作するため、ScriptManager 用の ScriptModule が必要です。

<system.web>
  <httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </httpModules>
</system.web>
于 2012-07-29T18:32:32.027 に答える
0

EnablePageMethods="True" と EnableScriptGlobalization="True" を追加

それがうまくいくことを願っています

于 2013-02-20T05:11:31.967 に答える