Frage

Ich habe eine Web-Methode in einem meiner aspx Seiten:

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

Und in der aspx Seite Ich habe die 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);
                }
            });

        });

Ich weiß, das sieht dumm, wie ich die Daten param gesetzt habe, aber es war sauberer, bevor und ich werde es ändern, aber der Punkt ist, scheint die JSON gut zu mir, so ist es nicht so?

Wenn es ausgeführt wird, da die Post nicht auf die Web-Methode, obwohl, wenn ich ändern und contentdatatype ich die ganze aspx Seite zurückgegeben. Eine Sache habe ich nur gedacht, sagen diese jquery ist eigentlich auf der register_borrower_step4.aspx Seite, würde das ein Problem verursachen?

War es hilfreich?

Lösung

Die Methode erwartet nicht ein Array. Versuchen Sie wie folgt aus:

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);
    }
});

Stellen Sie außerdem sicher, dass Punkt Separator floating korrekt ist gemäß der Kultur für die amount Parameter. Machen Sie den Unterschied zwischen . und , oder der Web-Methode möglicherweise nicht. Um zu analysieren, weitere Probleme könnten Sie FireBug genau zu sehen, was unter der Decke geschieht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top