2012-07-29 50 views
1

我想實現jquery滑塊的價格範圍,我嘗試調用頁面web方法使用jQuery ajax但它不工作的情況下的網頁方法但萬一我只是將ajax調用的URL屬性更改爲webservice,那麼它的調用就完美了。我在幾個小時之內嘗試了這個,並沒有找到任何背後的邏輯。這裏是我的代碼頁面web方法不工作在web服務方法調用完美的AJAX調用

<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: '[email protected]'}", 
          contentType: "application/json; charset=utf-8", 
          dataType: "json", 
          success: function (msg) { 
           alert('Thanks'); 
           // Do something interesting here. 
          } 
         });      
         return false; 
        } 
    }); 
     }); 
    </script> 

註釋掉網址選項頁面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方法是行不通的,其中使用Web服務方法相同的方法在jQuery的Ajax調用運行

+0

所以在使用url調用它時在Ajax中不起作用:SearchResult.aspx/FilterByPrice是否正確? – HatSoft 2012-07-29 18:26:04

回答

2

這是因爲PageMethods 必須在頁面上的靜態

試試這個:

[WebMethod] 
public static void FilterByPrice(string email) 
{ 
    // Use HttpContext.Current.Response instead 
    // Response.Write("min" + email); 
    //Response.Write("max" + max); 
} 
1

我建議你在httpmodule部分檢查你的web.config。它必須具有的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> 
0

添加的EnablePageMethods = 「true」 和EnableScriptGlobalization = 「真」

希望它會工作

+0

這應該是一個評論而不是答案。 – ryadavilli 2013-02-20 05:28:41