تاپیک مورد نظر بسته شده است
سلام دوستان. من سه تا پارامتر رو با json به کنترلر می فرستم
function() { var resiver = document.getElementById('ResiverId').value; var msgtext = document.getElementById('MessageText').value; var msgtitle = document.getElementById('Title').value; var msgData = [['resiver', 'msgtext', 'msgtitle'], [resiver, msgtext, msgtitle]]; var json = JSON.stringify(msgData); $.ajax({ type: "POST", url: '/Users/Messages/SendMessageJson/', contentType: "application/json; charset=utf-8", //data: { "resiver": resiver, "msgtext": msgtext, "msgtitle": msgtitle }, data:json, datatype: "json", success: function () { alert('پیام با موفقیت ارسال شد'); $('.col-lg-10').load('/Users/Messages/ShowInbox/'); }, error: function (jqXHR, exception) { alert('خطایی رخ داده است'); var msg = ''; if (jqXHR.status === 0) { msg = 'Not connect.\n Verify Network.'; } else if (exception === 'parsererror') { msg = 'Requested JSON parse failed.'; } else if (exception === 'timeout') { msg = 'Time out error.'; } else if (exception === 'abort') { msg = 'Ajax request aborted.'; } else { msg = 'Uncaught Error.\n' + jqXHR.responseText; } $('.ssss').html(msg); } }); });
و کد متد توی کنترلر من هم به این صورته:
public JsonResult SendMessageJson(int resiver, string msgtext,string msgtitle) { Message msg = new Message(); msg.IsRead = false; msg.MesageDate = DateTime.Now; msg.SenderId= db.Users.FirstOrDefault(b => b.UserName == User.Identity.Name).UserId; msg.ResiverId= resiver; msg.MessageText = msgtext; msg.Title = msgtitle; db.Messages.Add(msg); db.SaveChanges(); return Json(true, JsonRequestBehavior.AllowGet); }
زمانی که من فیلد ها رو پر می کنم و متد json رو فراخونی می کنم این موارد بدست میاد:
function() { var resiver = 24; var msgtext = متن تستی برای ارسال پیام; var msgtitle = متن تستی برای ارسال پیام; var msgData =عکسش مقدار هاشو پایین گذاشتم var json = "[[\"resiver\",\"msgtext\",\"msgtitle\"],[\"24\",\"متن تستی برای ارسال پیام\",\"تست ارسال پیام\"]]"; $.ajax({ type: "POST", url: '/Users/Messages/SendMessageJson/', contentType: "application/json; charset=utf-8", //data: { "resiver": resiver, "msgtext": msgtext, "msgtitle": msgtitle }, data:json, datatype: "json", success: function () { alert('پیام با موفقیت ارسال شد'); $('.col-lg-10').load('/Users/Messages/ShowInbox/'); }, error: function (jqXHR, exception) { alert('خطایی رخ داده است'); var msg = ''; if (jqXHR.status === 0) { msg = 'Not connect.\n Verify Network.'; } else if (exception === 'parsererror') { msg = 'Requested JSON parse failed.'; } else if (exception === 'timeout') { msg = 'Time out error.'; } else if (exception === 'abort') { msg = 'Ajax request aborted.'; } else { msg = 'Uncaught Error.\n' + jqXHR.responseText; } $('.ssss').html(msg); } }); });
بعد متد json تایید نمیشه (success) و میره به ارور(error) ارورش هم این میشه
The parameters dictionary contains a null entry for parameter 'resiver' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.JsonResult SendMessageJson(Int32, System.String, System.String)' in 'Labkhand.Areas.Users.Controllers.MessagesController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter. Parameter name: parameters
حل شد دوستان
$.ajax({ type: "POST", url: '/Users/Messages/SendMessageJson/', contentType: "application/json; charset=utf-8", data: JSON.stringify({ "resiver": resiver, "msgtext": msgtext, "msgtitle": msgtitle }),
هیچ کاربری تا کنون از این پست تشکر نکرده است
تاپیک مورد نظر بسته شده و امکان درج پاسخ وجود ندارد
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)