Saya memiliki kode jquery berikut untuk memanggil metode web di halaman aspx
$.ajax({
type: "POST",
url: "popup.aspx/GetJewellerAssets",
contentType: "application/json; charset=utf-8",
data: '{"jewellerId":' + filter + '}',
dataType: "json",
success: AjaxSucceeded,
error: AjaxFailed
});
dan inilah tanda tangan metode web
[WebMethod]
public static string GetJewellerAssets(int jewellerId)
{
Ini bekerja dengan baik.
Tapi sekarang saya perlu mendapatkan dua parameter yang diteruskan ke metode web
metode web baru terlihat seperti ini
[WebMethod]
public static string GetJewellerAssets(int jewellerId, string locale)
{
}
Bagaimana cara mengubah kode klien agar berhasil memanggil tanda tangan metode baru ini?
EDIT:
2 sintaks berikut berfungsi
data: '{ "jewellerId":' + filter + ', "locale":"en" }',
dan
data: JSON.stringify({ jewellerId: filter, locale: locale }),
dengan filter dan lokal adalah variabel lokal
data: JSON.stringify({ jewellerId: filter, locale: locale })
adalah cara terbaik yang saya temukan, Terima @ChrisCaJSON.stringify
dengan literal objek, Anda HARUS menyertakan nama parameter dengan titik dua, semuanya dibungkus di dalam tanda{}
kurung. MenggunakanJSON.stringify(objectLiteral)
tidak berhasil.[WebMethod] [ScriptMethod(UseHttpGet = true)] public static string TestIBAN(string ccc)
?Jawaban:
Jangan gunakan penggabungan string untuk meneruskan parameter, cukup gunakan hash data:
MEMPERBARUI:
Seperti yang disarankan oleh @Alex di bagian komentar, ASP.NET PageMethod mengharapkan parameter menjadi JSON yang dikodekan dalam permintaan, jadi
JSON.stringify
harus diterapkan pada hash data:sumber
JSON.stringify( myObject )
untuk menggunakan untuk membuat string JSON dari objek javascript, jika Anda ingin mengelompokkan parameter Anda ke kelas nanti.sumber
cukup tambahkan properti sebanyak yang Anda butuhkan ke objek data.
sumber
data
metode web dalam kasus ini untuk membaca properti di sisi server?JANGAN gunakan metode di bawah ini untuk mengirim data menggunakan panggilan ajax
Jika karena kesalahan pengguna memasukkan karakter khusus seperti tanda kutip tunggal atau tanda kutip ganda, panggilan ajax gagal karena string yang salah.
Gunakan metode di bawah ini untuk memanggil layanan Web tanpa masalah apa pun
Di parameter di atas adalah nama objek javascript dan merangkainya saat meneruskannya ke atribut data dari panggilan ajax.
sumber
Apakah ada orang lain yang memperhatikan bahwa string / objek json tidak valid di semua jawaban kecuali jawaban David Hedlund? :)
Objek JSON harus diformat dengan cara berikut: {"key": ("value" | 0 | false)}. Juga, menuliskannya sebagai string membutuhkan lebih sedikit daripada merangkai objek ...
sumber
sumber
Hanya untuk menambahkan [Baris ini bekerja dengan sempurna di Asp.net & temukan Bidang kontrol web di jason Misalnya: <% Fieldname%>]
sumber
sumber
Ini semua tentang data yang Anda berikan; memiliki string yang diformat dengan benar. Jika Anda meneruskan data kosong maka data: {} akan bekerja. Namun dengan beberapa parameter, itu harus diformat dengan benar misalnya
....
data: dataParam
...
Cara terbaik untuk memahaminya adalah memiliki penanganan kesalahan dengan parameter pesan yang tepat, sehingga dapat mengetahui kesalahan rinci.
sumber
Saya berhasil melewati beberapa parameter menggunakan json
sumber