2010-08-20 25 views
2

J'ai une méthode Web dans l'une de mes pages ASPX:après JQuery AJAX pour asp.net webmethod jamais obtenir appelé

[WebMethod] 
public static string AddDebt(int userId, int type, string description, float amount) 

Et dans la page ASPX Je le JQuery

$(".addDebt").click(function (e) { 
      e.preventDefault(); 
      var userId = $("[id$='txtUserId']").val(); 
      var type = $("[id$='ddlExistingDebtType']").val(); 
      var description = $("[id$='txtExistingDebtLender']").val(); 
      var amount = $("[id$='txtExistingDebtAmount']").val(); 

      var results = new Array(); 
      results.push({ userId: userId }); 
      results.push({ type: type }); 
      results.push({ description: description }); 
      results.push({ amount: amount }); 
      var dataString = JSON.stringify(results); 
      $.ajax(
      { 
       type: "POST", 
       url: "register_borrower_step4.aspx/AddDebt", 
       data: dataString, 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (result) { 
        $(".pDebtsTable").text(result); 
       } 
      }); 

     }); 

I Je sais que ça a l'air idiot de la façon dont j'ai paramétré les données mais c'était plus propre avant et je vais le changer, mais le fait est que le JSON me va bien donc ce n'est pas ça?

Lors de son exécution, il n'y a pas de post sur la méthode web, mais si je change contentType et dataType, la page aspx entière est renvoyée. Une chose que je viens de penser, disons que cette jquery est en fait sur la page register_borrower_step4.aspx, cela causerait-il un problème?

Répondre

4

La méthode n'attend pas de tableau. Essayez comme ceci:

var dataString = JSON.stringify({ 
    userId: userId, 
    type: type, 
    description: description, 
    amount: amount 
}); 

$.ajax({ 
    type: "POST", 
    url: "register_borrower_step4.aspx/AddDebt", 
    data: dataString, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (result) { 
     $(".pDebtsTable").text(result); 
    } 
}); 

Assurez-vous également que le séparateur à virgule flottante est correct en fonction de la culture pour le paramètre amount. Faites la distinction entre . et , ou la méthode web pourrait ne pas fonctionner. Pour analyser plus en détail les problèmes, vous pouvez utiliser FireBug pour voir exactement ce qui se passe sous les couvertures.

+0

merci qui a fonctionné parfaitement – ddd

+0

@Darin Dimitrov Peut-on publier plusieurs fichiers de l'appel ajax à la méthode web et est-ce possible? – RajeshKannan