SORU
25 Mayıs 2010, Salı


Nasıl JSON verilerini kullanarak gönderirken bir AntiForgeryToken tedarik edebilirim dolar.ajax?

Bu yazının aşağıdaki gibidir: kodu kullanıyorum

İlk bir denetleyicisi eylem için doğru değerler ile dizi değişken doldururum. Sadece javascript için aşağıdaki satırı ekleyerek çok straigtforward olması gerektiğini düşünüyorum aşağıdaki kodu kullanarak:

data["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();

<%= Html.AntiForgeryToken() %> hakkı onun evinde ve eylem [ValidateAntiForgeryToken] vardır

Ama benim denetleyicisi eylem diyor: "sahte token" . Geçersiz

Burada yanlış ne yapıyorum?

Kod

data["fiscalyear"] = fiscalyear;
data["subgeography"] = $(list).parent().find('input[name=subGeography]').val();
data["territories"] = new Array();

$(items).each(function() {
    data["territories"].push($(this).find('input[name=territory]').val());
});

    if (url != null) {
        $.ajax(
        {
            dataType: 'JSON',
            contentType: 'application/json; charset=utf-8',
            url: url,
            type: 'POST',
            context: document.body,
            data: JSON.stringify(data),
            success: function() { refresh(); }
        });
    }

CEVAP
25 Mayıs 2010, Salı


Sorunun ne olduğunu [ValidateAntiForgeryToken] ile işaretlenmiş olan bu isteği işlemek için gereken ve o denetleyici eylemi parametre __RequestVerificationToken olarak adlandırılan bu istekle birlikte Gönderildi umuyor.

Bu parametre JSON gösterimi için form dönüştüren ve bu özel durum çok JSON.stringify(data) kullandığınız haberi yok.

İki olası çözümleri burada görebilirsiniz:

1 numara: isteğiniz parametreleri göndermek için JSON yerine x-www-form-urlencoded Kullanın:

data["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
data["fiscalyear"] = fiscalyear;
// ... other data if necessary

$.ajax({
    url: url,
    type: 'POST',
    context: document.body,
    data: data,
    success: function() { refresh(); }
});

Sayı 2: iki parametre içine isteği Ayrı:

data["fiscalyear"] = fiscalyear;
// ... other data if necessary
var token = $('[name=__RequestVerificationToken]').val();

$.ajax({
    url: url,
    type: 'POST',
    context: document.body,
    data: { __RequestVerificationToken: token, jsonRequest: JSON.stringify(data) },
    success: function() { refresh(); }
});

Her durumda __RequestVerificationToken değer göndermek gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Baby Big Mouth

    Baby Big Mou

    5 Mart 2013
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009
  • UnboxTechnology

    UnboxTechnol

    20 Ocak 2011