ورود

View Full Version : سوال: عدم عملکرد Ajax



reza_devel0per
شنبه 24 آذر 1397, 13:37 عصر
سلام..

لطفاً کدهای زیر رو مطالعه بفرمایید و راهنماییم کنید که اشتباهم کجاست که AJax کار نمیکنه و به ویوی GetMessage ریدایرکت میشه....

کد های کنترلر :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MVCSample.Controllers
{
public class myController : Controller
{
public ActionResult GetMessage(string name)
{
ViewBag.strName = name;
return View();
}

public ActionResult CallUs()
{
return View();
}
}
}


کد ویوی CallUs:

@{
ViewBag.Title = "CallUs";
Layout = null;
}

<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<script src="~/scripts/jquery.validate.min.js"></script>
<script src="~/scripts/jquery.validate.unobtrusive.min.js"></script>
</head>

<input type="text" name="name" id="name" />
<a class="btn btn-default" href="" id="testLink">تایید</a>

<div id="message"></div>
@Ajax.ActionLink("GetMessage", "GetMessage", "my", new AjaxOptions { UpdateTargetId = "message", InsertionMode = InsertionMode.Replace }, new { @id = "get_message_link" })

<script>

$("#testLink").click(function (e) {
e.preventDefault();
var str = "/my/GetMessage?name=" + $('#name').val();
$("#get_message_link").attr('href', str);
document.getElementById("get_message_link").click();
});

</script>


کدهای ویوی GetMessage:

<p>welcome @ViewBag.strName</p>

مهدی کرامتی
شنبه 24 آذر 1397, 16:10 عصر
چرا از jQuery Ajax استفاده نکرده اید؟ روش Microsoft Ajax قدیمی شده و توصیه شده ازش استفاده نشود.

و در ضمن، توضیح ندادید توقع داشتید چه اتفاقی بیافته که الان انجام نمیشه.

reza_devel0per
شنبه 24 آذر 1397, 17:31 عصر
این پروژه برای یادگیری خودم بود و میخواستم وقتی در input اول (name ) اسمی رو وارد کردیم و دکمه تایید رو زدیم، بدون اینکه صفحه رفرش بشه اکشن GetMessage در کنترلر my فراخوانی و نتیجه ش در div با نام message دیده بشه....
در خصوص JQuery Ajax و جایگزینی اون با Microsoft Ajax اطلاعی نداشتم، اگر کمی راهنمایی بفرمایید یا لینکی برای یادگیری معرفی کنید ممنون میشم.

reza_devel0per
شنبه 24 آذر 1397, 19:37 عصر
ضمن تشکر از آقای کرامتی ، با سرچ در مورد jquery ajax به نتیجه رسیدم.
جهت اینکه تاپیک برای سایر دوستانی که با این مشکل روبرو میشن، بتونه مفید باشه کد رو اینجا قرار میدم:

<label>نام</label>
<input type="text" name="name" id="name" />
<button class="btn btn-default" id="testLink">تایید</button>
<div id="message"></div>

<script>

$(function () {
$('#testLink').on('click', function (e) {
e.preventDefault();
$.ajax({
url: '@Url.Action("GetMessage","my")',
data: { name: $('#name').val()},
success: function (result) {
$('#message').html(result);
}
});
});

});

</script>