Saya mencoba untuk memulai dengan panggilan ASP.NET MVC Ajax.
Pengontrol:
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
public ActionResult Index()
{
return View();
}
public ActionResult FirstAjax()
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
Melihat:
<head runat="server">
<title>FirstAjax</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var serviceURL = '/AjaxTest/FirstAjax';
$.ajax({
type: "POST",
url: serviceURL,
data: param = "",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
function successFunc(data, status) {
alert(data);
}
function errorFunc() {
alert('error');
}
});
</script>
</head>
Saya hanya perlu mencetak peringatan dengan metode pengontrol mengembalikan data. Kode di atas hanya mencetak "chamara" pada pandangan saya. Peringatan tidak aktif.
MEMPERBARUI
Saya memodifikasi pengontrol saya seperti di bawah ini dan mulai bekerja. Saya tidak memiliki ide yang jelas mengapa ini berhasil sekarang. Seseorang tolong jelaskan. Parameter "a" tidak terkait. Saya menambahkannya karena saya tidak dapat menambahkan dua metode dengan nama metode dan parameter yang sama. Saya pikir ini mungkin bukan solusi tetapi berhasil
public class AjaxTestController : Controller
{
//
// GET: /AjaxTest/
[HttpGet]
public ActionResult FirstAjax()
{
return View();
}
[HttpPost]
public ActionResult FirstAjax(string a)
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
}
c#
jquery
asp.net
asp.net-mvc
asp.net-mvc-2
chamara
sumber
sumber
{"name":"chamara"}
. kemudian coba baca sebagaidata['name']
Jawaban:
Setelah pembaruan Anda selesai,
Sebelumnya Anda hanya mengembalikan JSON ke browser tanpa merender HTML apa pun. Sekarang ia memiliki tampilan HTML yang dirender di mana ia bisa mendapatkan Data JSON Anda.
Anda tidak dapat langsung merender JSON sebagai data biasa, bukan HTML.
sumber
Hapus atribut data karena Anda
POSTING
bukan siapa-siapa ke server (Pengontrol Anda tidak mengharapkan parameter apa pun).Dan dalam Metode AJAX Anda, Anda dapat menggunakan
Razor
dan menggunakan@Url.Action
daripada string statis:Dari pembaruan Anda:
sumber
Gunakan Razor untuk mengubah URL Anda secara dinamis dengan memanggil tindakan Anda seperti ini:
sumber
Hal pertama yang tidak perlu memiliki dua versi perpustakaan jquery yang berbeda dalam satu halaman, "1.9.1" atau "2.0.0" sudah cukup untuk membuat panggilan ajax berfungsi ..
Ini kode pengontrol Anda:
Seperti inilah tampilan Anda seharusnya:
sumber
Jika Anda hanya perlu menekan Metode C # di Panggilan Ajax Anda, Anda hanya perlu melewatkan dua jenis materi dan url jika permintaan Anda diterima maka Anda hanya perlu menentukan url saja. silakan ikuti kode di bawah ini berfungsi dengan baik.
C # Kode:
Kode Skrip Java jika Dapatkan Permintaan
Kode Java Script jika Kirim Permintaan dan juga [HttpGet] ke [HttpPost]
Catatan: Jika Anda FirstAjax di pengontrol yang sama di mana Pengontrol Tampilan Anda maka tidak perlu nama Pengontrol di url. Suka
url: 'FirstAjax',
sumber
Ini untuk pertanyaan UPDATE Anda.
Karena Anda tidak dapat memiliki dua metode dengan nama dan tanda tangan yang sama, Anda harus menggunakan atribut ActionName:
MEMPERBARUI:
Dan silakan lihat tautan ini untuk referensi lebih lanjut tentang bagaimana metode menjadi tindakan. Referensi yang sangat bagus.
sumber
Melihat;
Metode Pengontrol;
sumber
alih-alih
url: serviceURL,
digunakandan apakah Anda meneruskan 2 parameter ke successFunc?
sumber
Tambahkan "JsonValueProviderFactory" di global.asax:
sumber