2016-07-08 12 views
-1

JSONオブジェクトをC#メソッドに送信しようとしましたが、別のJSONオブジェクトも返しています。WebMethodのAJAX呼び出しでオブジェクトを送信する

オブジェクトはJavaScriptで作成されます。

lottery = { 
     TotalValue: totalValue, 
     Players: txtPlayers.value, 
     TicketPrice: txtAmount.value, 
     FirstPrize: prize, 
     MyComission: myComission, 
     MyRate: myRate, 
     SellerComission: sellerComission, 
     SellerRate: sellerRate 
    } 

その後はAJAXを経由して送信されています:

function CreateLottery(lottery) { 
$.ajax({ 
    type: 'POST', 
    url: 'default.aspx/Create', 
    data: lottery, 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    success: function (data, status) { 
     alert(status) 
    }, 
    error: alert("error!") 
}); 
} 

C#のコードビハインド(私はブレークポイントを持っており、それはここに到達したことはありません):

[WebMethod] 
    public static object Create(Lottery lottery) 
    { 
     return new 
     { 
      foo = "bar", 
     }; 
    } 
    public class Lottery 
    { 
     public decimal TotalValue { get; set; } 
     public decimal Players { get; set; } 
     public decimal TicketPrice { get; set; } 
     public decimal FirstPrize { get; set; } 
     public decimal MyComission { get; set; } 
     public decimal MyRate { get; set; } 
     public decimal SellerComission { get; set; } 
     public decimal SellerRate { get; set; } 
    } 

なぜ私はいつも「エラー!警戒?

+1

「なぜ常にエラーが発生するのですか?」 - どういうエラーでしょうか? – X3074861X

+0

答えを確認し、それが働いているかどうかを教えてください。 – Developer

+0

私は質問を編集しました、downvoteする必要はありません。正当な質問です。特に何かが起きています。誰かが私のために仕事をするのではなく、助けを求めています。 – Tiago

答えて

0

文字列化してデータが最初:

var lottery = { 
    TotalValue: totalValue, 
    Players: txtPlayers.value, 
    TicketPrice: txtAmount.value, 
    FirstPrize: prize, 
    MyComission: myComission, 
    MyRate: myRate, 
    SellerComission: sellerComission, 
    SellerRate: sellerRate 
} 

function CreateLottery(lottery) { 
$.ajax({ 
    type: 'POST', 
    url: 'default.aspx/Create', 
    data: JSON.stringify(lottery), 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    success: function (data, status) { 
     alert(status); 
    }, 
    error: function() { 
     alert("error!"); 
    } 
}); 
} 

編集:あなたのエラーコールバックが誤って定義され、AJAX呼び出しが行われるたびにトリガされます。上記のように変更します。

+0

ありがとうございます。私はあなたが言ったことを修正しましたが、私はまだ "エラー!"宝くじクラスの値が期待するように、一部の値が10進数(数値)として送信されないという問題がありますか? – Tiago

0

ウェブメソッドにデータを送信するには、の2種類のメソッドがあります。

方法1

あなたは文字列にあなたの配列オブジェクトはJSON.stringify(lottery)を使用して変更

2方法

function CreateLottery(lottery) { 
$.ajax({ 
    type: 'POST', 
    url: 'default.aspx/Create', 
    data: {'TotalValue': totalValue, 'Players': txtPlayers.value,'TicketPrice': txtAmount.value, 'FirstPrize': prize,  'MyComission': myComission, 'MyRate': myRate, 'SellerComission': sellerComission, 'SellerRate': sellerRate}, 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    success: function (data, status) { 
     alert(status) 
    }, 
    error: alert("error!") 
}); 
} 

と同様にWebメソッド内の各プロパティの値を渡すことができます。

var lottery = { 
    TotalValue: totalValue, 
    Players: txtPlayers.value, 
    TicketPrice: txtAmount.value, 
    FirstPrize: prize, 
    MyComission: myComission, 
    MyRate: myRate, 
    SellerComission: sellerComission, 
    SellerRate: sellerRate 
} 


function CreateLottery(lottery) { 
$.ajax({ 
    type: 'POST', 
    url: 'default.aspx/Create', 
    data: JSON.stringify(lottery), 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    success: function (data, status) { 
     alert(status) 
    }, 
    error: alert("error!") 
}); 
} 
+0

私はそれを行い、他の答えに示されているようにエラーコールバックを修正しましたが、 "エラー!"私は両方の方法を試しました。宝くじクラスが期待しているように、データが10進数(数値)として送信されていないことが問題である可能性はありますか? – Tiago

関連する問題