2017-09-15 20 views
2

を受信しないデータのリストを返すと、それが正常に動作している私のWebフォームのWebMethod属性です: Ajaxの成功の機能は以下のデータ

[WebMethod] 
public static List<SalesInvoiceFinalCalculationEntity> salesInvoiceFinalCalculaiton(string InvoiceNo) 
{ 
    List<SalesInvoiceFinalCalculationEntity> list = new List<SalesInvoiceFinalCalculationEntity>(); 
    list = SalesInvoiceManager1.salesInvoiceFinalCalculaiton(InvoiceNo); 
    return list; 
} 
しかし、Ajaxの機能以下に、私がデータを取得することはできません。 ajax成功関数でデータをテキストボックスにバインドすると、Html textBoxに未定義のテキストが表示されます。ここで

function salesInvoiceFinalCalculaiton() {   

    var InvoiceNo = $("#txt_InvoiceNo").val(); 
    $.ajax({ 
     async: false, 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     url: "/AjaxRequestToServer.aspx/salesInvoiceFinalCalculaiton", //URI 
     data: "{InvoiceNo:'" + InvoiceNo + "'}", 
     dataType: "json", 
     success: function (data) { 

      document.getElementById("txtinvoicevalue").value=(data.totalprice); 
      document.getElementById("txtTotalDiscount").value = data.discountamt; 
      document.getElementById("txtTotalTaxableValue").value = data.taxableamt; 
      document.getElementById("txtTotalCGST").value = data.cgstamt; 
      document.getElementById("txtTotalSGST").value = data.sgstamt; 
      document.getElementById("txtGrandTotal").value = data.grandtotal; 

     }, 
     error: function (xhr) { 
      if (xhr.statusText == "Invalid Request") { 
       sessionStorage.clear(); 
      } 
     } 
    }); 
} 

データ層とストアドプロシージャです:

public static List<SalesInvoiceFinalCalculationEntity> salesInvoiceFinalCalculaiton(string InvoiceNo) 
     { 
      try 
      { 


       List<SalesInvoiceFinalCalculationEntity> SalesInvoiceFinalCalculation = new List<SalesInvoiceFinalCalculationEntity>(); 

       DataSet ds = SqlHelper.ExecuteDataset(Util.ConnectionString, CommandType.StoredProcedure, "sp_salesInvoiceFinalCalculaiton", 
        new SqlParameter("@InvoiceNo", InvoiceNo)); 

       foreach (DataRow dr in ds.Tables[0].Rows) 
       { 
        SalesInvoiceFinalCalculationEntity list = new SalesInvoiceFinalCalculationEntity(dr); 
        SalesInvoiceFinalCalculation.Add(list); 
       } 
       return SalesInvoiceFinalCalculation; 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
     } 

そして、これが私のエンティティクラスである:

public class SalesInvoiceFinalCalculationEntity 
    { 
     public int InvoiceNo { get; set; } 
     float totalprice { get; set; } 
     float discountamt { get; set; } 
     float taxableamt { get; set; } 
     float cgstamt { get; set; } 
     float sgstamt { get; set; } 
     float grandtotal { get; set; } 
     public SalesInvoiceFinalCalculationEntity() { } 
     public SalesInvoiceFinalCalculationEntity(DataRow dr) 
     { 
      InvoiceNo = Convert.ToInt32(dr["InvoiceNo"]); 
      totalprice = float.Parse(dr["totalprice"].ToString()); 
      discountamt = float.Parse(dr["discountamt"].ToString()); 
      taxableamt = float.Parse(dr["taxableamt"].ToString()); 
      cgstamt = float.Parse(dr["cgstamt"].ToString()); 
      sgstamt = float.Parse(dr["sgstamt"].ToString()); 
      grandtotal = float.Parse(dr["grandtotal"].ToString()); 
     } 
    } 

データが成功機能で受信されていないされている理由は!

+0

のものでなければならないすべての変数とdocument.getElementById("txtinvoicevalue").value=(data.d[0].totalprice);はあなたがすべてのエラーを持っていますかエンティティ

Public

SalesInvoiceFinalCalculationEntity

を言及するのを忘れましたか?それはあなたの方法を打つことですか? –

+0

@ Alexandru-IonutMihaiはいそれはメソッドをヒットし、メソッドはデータがあればリストを返します。私は何かエラーが発生するdint。 textBoxに "Undefined"というテキストを表示します。実際の値はテキストボックスに表示されません。 –

+0

成功しましたか:function(data.d)?あなたが好きなようなWebメソッドを使用している場合、オブジェクトは実際には 'data.d'だけではなく 'data'になります –

答えて

1

最後に解決しました。私は、これは代わりに

document.getElementById("txtinvoicevalue").value=(data.totalprice);

1

まず、async: falseを使用していますので、あなたのご要望にはフリーズフリーズですので、悪い習慣です。 使用しないでください。

問題は、あなたのAJAXメソッドの成功コールバック機能に応答を受け取るためにあなたのserver-side方法からjsonオブジェクトを返す必要があるということです。

[WebMethod] 
public static string salesInvoiceFinalCalculaiton(string InvoiceNo) 
{ 
     List<SalesInvoiceFinalCalculationEntity> list = new List<SalesInvoiceFinalCalculationEntity>(); 
     list = SalesInvoiceManager1.salesInvoiceFinalCalculaiton(InvoiceNo); 
     return JsonConvert.SerializeObject(list); 
} 

Webリクエストはjson形式で動作します。

+0

現在、 "JsonConvertは現在のコンテキストに存在しません"というエラーを表示します –

+0

次に参照を追加してください。 –

+0

https://stackoverflow.com/questions/4444903/how-to-install-json-net-using-nugetこれはナゲットパッケージです –

0

JavaScriptクラスにJavaクラスを送信しようとしているというのが問題だと思います。シンプルなデータ型番号、文字のみを送信することができます。私が理解しているように、SalesInvoiceFinalCalculationEntityのメンバー変数にアクセスしようとしています。

この場合、JSONオブジェクトとして送信し、このようなデータを取得して解析する必要があります。

AJAXの背後にあるアイデアは、ではなく、が非同期リクエストを使用してウェブサイトをフリーズすることによって、ユーザーの利便性を向上させることです。

非同期でAJAX呼び出しを呼び出すことにより:偽

はAJAXの背後にある考え方を削除します。これで、単にサーバーを正常に呼び出すことができます。あなたのリストをシリアル化し、それを文字列として返す

https://www.newtonsoft.com/json

0

はこれを使用してください。

次に、あなたのJavaScriptで:

success: function (data) { 
    data = JSON.parse(data); 
    document.getElementById("txtinvoicevalue").value=(data.totalprice); 
    document.getElementById("txtTotalDiscount").value = data.discountamt; 
    document.getElementById("txtTotalTaxableValue").value = data.taxableamt; 
    document.getElementById("txtTotalCGST").value = data.cgstamt; 
    document.getElementById("txtTotalSGST").value = data.sgstamt; 
    document.getElementById("txtGrandTotal").value = data.grandtotal; 

}, 
+0

Service.svcとは何ですか? –

+0

あなたはどの種類のWebサービスを使用していますか?それはWCF –

+0

ですが、私はajaxによって呼び出されたその単純なasp.net webformです。 –

0

success: function (data.d)ではなくsuccess: function (data)を試してみてください。 Webメソッドを使用しているときにリターンオブジェクトがdata.d内にあり、単純なデータではありません。

また、他の回答にもかかわらず、 [webmethod]属性とjquery ajaxを使用する場合、レスポンスオブジェクトをjsonに変換する必要はありません。それは自動的にそうするでしょう。

+0

'.d'エラー:: '{'と期待 ';' –

+0

リストを返すように見えるので、応答オブジェクトをループする必要もありますか?あなたのオブジェクトは、ブラウザの開発ツールでどのように見えますか?あなたはそれを投稿できますか? –

+0

私は理解していない..私はここに新しいです.. PLZここに投稿するように求めているとどのようにそれを行うには? –

関連する問題