2016-05-17 10 views
2

私はクライアント側で呼び出したいC#メソッドを持っています。 私はこのjavascriptからajaxを使用してC#メソッドを呼び出すことができません

function ValidateIfDuplicate() 
     { 
      debugger 

      var billtext = $("#ctl00_ContentPlaceHolder2_textBoxBillNumber").val(); 
      var retailer= $("#ctl00_ContentPlaceHolder2_dropDownListRetailers").val(); 
      var billdate = $("#ctl00_ContentPlaceHolder2_textBoxBillDate").val(); 

      if (billtext == "") 
      { 
       alert("Bill Number cannot be left empty"); 
       return false; 
      } 
      else if (retailer == 0) { 
       alert("Please select a Retailer"); 
       return false; 
      } 
      else if (billdate == '') { 
       alert("Date cannot be left empty"); 
       return false; 
      } 
      else if (billtext != '' && retailer != '' && billdate != '') 
      { 


        $.ajax({ 
         Type: "POST", 
         url: "CAInvoiceEntry.aspx/ValidateDuplicateEntry", 
         contentType: "application/json; charset=utf-8", 
         data: { billtext1: billtext, billdate1: billdate, retailer1: retailer }, 
         dataType: "json", 
         success: function (result) { 
          debugger 
          alert(result.d); 
         } 
        }); 

       return true; 
      } 
     } 

を達成するために呼び出し、AJAXを使用して、これは私のC#の方法

[System.Web.Script.Services.ScriptService] 
public partial class CAInvoiceEntry: BaseClass 
{ 
    [WebMethod, ScriptMethod()] 
     public static int ValidateDuplicateEntry(string billtext1, string billdate1, string retailer1) 
     { 
      string validatebill = objCAInvoiceEntry.validatebilldate(textBoxBillNumber.Text, billdate1.ToString(), ViewState[AppConstants.UploadedBy].ToString(), dropDownListRetailers.SelectedValue); 
      if (validatebill == "1") 
      { 

       return 1; 
      } 
      else 
       return 0; 
     } 
} 

ですが、Webメソッドが発射されていません。 私は、代わりに(enablepagemethods = trueでスクリプトを登録することによって)pagemethods.methodname()を使用しようとしましたが、効果はありません。

誰かが私がどこでそれを間違っているかについて私を導くことができたら? ちょっとクリアしてください。 以下の画像では、ajax呼び出しがスキップされるブレークポイントの実行を見ることができます。 enter image description here

+0

試してみる[System.Web.Script.Services.ScriptService】この方法は、あなたがブラウザ 'console'に何を得る –

+0

に位置されているクラスに、この追加しますか? –

+0

@ guruprasad raoデバッグと検証の際に、ブラウザ上に何も表示されず、コントロールがメソッドに渡されません。 –

答えて

0

ajaxでパラメータを渡す方法に問題があるようです。 これを試してください。

if (billtext != '' && retailer != '' && billdate != '') 
      { 

       debugger 

       $.ajax({ 
        type: "POST", 
        url: "CAInvoiceEntry.aspx/ValidateDuplicateEntry", 
        data: "{ billtext1:" + "'" + billtext + "'" + ", billdate1:" + "'" + billdate + "'" + ", retailer1:" + "'" + retailer + "'" + "}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        async: true, 
        cache: false, 
        success: function (msg) { 
         if (msg == "1") 
             alert("Already exists"); 
            else 
             alert("valid"); 
        }, 
        error: function (msg) { 
         debugger; 
         alert(msg); 
        } 
       }) 
       return false; 


      } 
1

私は今日同様の問題に直面していました。私の場合は、App_startフォルダにRouteConfigを持っていたので、私は、問題の原因となった行を

//settings.AutoRedirectMode = RedirectMode.Permanent;

コメントで私の問題を解決しました。

あなたのウェブメソッドは公開され、静的である必要があります。あなたはJavaScriptで小さなタイプミスを持って

public static int MethodName() 
{ 
    // your method 
} 
+0

私はMVCを使用していないので、私の場合はこれは適用されません。ありがとうございました。もし他の提案があればそれは素晴らしいでしょう –

+0

私もMVCを使用していませんでしたが、あなたはWebformsで 'RouteConfig'を使うこともできます。 – KanisXXX

0

よう

何か。 JavaScriptは大文字と小文字を区別しています。 [ネットワーク]タブの[F12を使用する場合は、あなたの現在のAJAX呼び出しがGET要求を行っていることに気づいただろう

type: "POST" 

:あなたはに渡している。

Type: "POST" 

しかし、実際には、あなたは渡すべきですPOSTリクエストではありません。

関連する問題