r4hgozar
جمعه 12 تیر 1394, 13:27 عصر
سلام.
من یه هفتس درگیر این شدم که چرا کد های جدید ajax که می نویسم درست عمل نمی کنه.
خود همین رو تو همین پروژه نوشتم واسه یه کنترلر دیگه کار می کنه اما اینجا با ورودی های جدید درست عمل نمی کنه.
این روش اول که کلا مقداری رو پاس نمیده طرف کنترلر
(یعنی وقتی رو دکمه submit کلیک می کنم دوباره کنترلر Details عمل می کنه)
public ActionResult Details(string PostUrl)
{
var ticket = _post.Gets().FirstOrDefault(n => n.PostUrl == PostUrl);
var model =new ArticaleVm()
{
PostAdminVm = _post.Gets().FirstOrDefault(n => n.PostUrl == PostUrl),
CommentAdminVms = _comment.UserComment(ticket.Id).Where(i=>i.Show ==true)
};
return View(model);
}
این کنترلر که باید json کار کنه
[HttpPost]
public ActionResult Comment(CommentAdminVm model, Guid pid, string CaptchaDeText2)
{
if (ModelState.IsValid)
{
try
{
model.PostId = pid;
if (_comment.Insert(model))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json(false, JsonRequestBehavior.AllowGet);
}
catch
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}
return Json(false, JsonRequestBehavior.AllowGet);
}
این هم کد صفحه
@using (Html.BeginForm("Comment", "Article", FormMethod.Post, new { id = "MyForm" }))
واین هم jquery
<script type="text/javascript">
$(function () {
$('#ok').click(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
Url: '/Article/Comment',
data: {
Pid: $('#pid').val(),
Name: $('#NameC').val(),
Body: $('#BodyC').val(),
Email: $('#EmailC').val(),
PhoneNumber: $('#PhoneNumberC').val(),
},
datatype: "Json",
success: function (data, status) {
if (data == true) {
swal("ثبت شد!", "نظر شما با موفقیت ثبت گردید", "success");
} else
alert("اطلاعات و کد انسان شناس را درست وارد نمایید");
},
error: function () {
alert("قطع ارتباط با سرور");
}
});
});
});
</script>
اخر مجبور شدم از روش زیر استفاده کنم اما بازم مقدار برگشتی میده ture اما alert پایین درست کار نمی کنه.
این روش (مقدار برگشت می کنه اما function done مقداری رو نمی گیره تا alert رو نمایش بده)
هر چی رو فکر کنین چک کردم اما درست کار نمی کنه. یک هفتس خسته شدم واقعا.
[HttpPost]
public ActionResult Comment(CommentAdminVm model)
{
if (ModelState.IsValid)
{
try
{
if (_comment.Insert(model))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json(false, JsonRequestBehavior.AllowGet);
}
catch
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}
return Json(false, JsonRequestBehavior.AllowGet);
}
@using (Ajax.BeginForm("Comment", "Article", FormMethod.Post, new AjaxOptions { HttpMethod = "POST", OnSuccess = "done(data)" }))
@section scripts
{
<script src="~/Content/dist/sweetalert.min.js"></script>
<script type="text/javascript">
$(function () {
function done(data) {
if (data == true) {
swal("ثبت شد!", "نظر شما با موفقیت ثبت گردید", "success");
}
else
alert("اطلاعات و کد انسان شناس را درست وارد نمایید");
}
});
</script>
}
من یه هفتس درگیر این شدم که چرا کد های جدید ajax که می نویسم درست عمل نمی کنه.
خود همین رو تو همین پروژه نوشتم واسه یه کنترلر دیگه کار می کنه اما اینجا با ورودی های جدید درست عمل نمی کنه.
این روش اول که کلا مقداری رو پاس نمیده طرف کنترلر
(یعنی وقتی رو دکمه submit کلیک می کنم دوباره کنترلر Details عمل می کنه)
public ActionResult Details(string PostUrl)
{
var ticket = _post.Gets().FirstOrDefault(n => n.PostUrl == PostUrl);
var model =new ArticaleVm()
{
PostAdminVm = _post.Gets().FirstOrDefault(n => n.PostUrl == PostUrl),
CommentAdminVms = _comment.UserComment(ticket.Id).Where(i=>i.Show ==true)
};
return View(model);
}
این کنترلر که باید json کار کنه
[HttpPost]
public ActionResult Comment(CommentAdminVm model, Guid pid, string CaptchaDeText2)
{
if (ModelState.IsValid)
{
try
{
model.PostId = pid;
if (_comment.Insert(model))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json(false, JsonRequestBehavior.AllowGet);
}
catch
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}
return Json(false, JsonRequestBehavior.AllowGet);
}
این هم کد صفحه
@using (Html.BeginForm("Comment", "Article", FormMethod.Post, new { id = "MyForm" }))
واین هم jquery
<script type="text/javascript">
$(function () {
$('#ok').click(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
Url: '/Article/Comment',
data: {
Pid: $('#pid').val(),
Name: $('#NameC').val(),
Body: $('#BodyC').val(),
Email: $('#EmailC').val(),
PhoneNumber: $('#PhoneNumberC').val(),
},
datatype: "Json",
success: function (data, status) {
if (data == true) {
swal("ثبت شد!", "نظر شما با موفقیت ثبت گردید", "success");
} else
alert("اطلاعات و کد انسان شناس را درست وارد نمایید");
},
error: function () {
alert("قطع ارتباط با سرور");
}
});
});
});
</script>
اخر مجبور شدم از روش زیر استفاده کنم اما بازم مقدار برگشتی میده ture اما alert پایین درست کار نمی کنه.
این روش (مقدار برگشت می کنه اما function done مقداری رو نمی گیره تا alert رو نمایش بده)
هر چی رو فکر کنین چک کردم اما درست کار نمی کنه. یک هفتس خسته شدم واقعا.
[HttpPost]
public ActionResult Comment(CommentAdminVm model)
{
if (ModelState.IsValid)
{
try
{
if (_comment.Insert(model))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json(false, JsonRequestBehavior.AllowGet);
}
catch
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}
return Json(false, JsonRequestBehavior.AllowGet);
}
@using (Ajax.BeginForm("Comment", "Article", FormMethod.Post, new AjaxOptions { HttpMethod = "POST", OnSuccess = "done(data)" }))
@section scripts
{
<script src="~/Content/dist/sweetalert.min.js"></script>
<script type="text/javascript">
$(function () {
function done(data) {
if (data == true) {
swal("ثبت شد!", "نظر شما با موفقیت ثبت گردید", "success");
}
else
alert("اطلاعات و کد انسان شناس را درست وارد نمایید");
}
});
</script>
}