#asp.net-core #controller #jquery-ajax
#asp.net-ядро #контроллер #jquery-ajax
Вопрос:
привет
, я пытаюсь отправить строку с контроллера на ajax в ответе на вызов ajax. но мой ajax не получает строку в ответ, и я вижу необработанный контент в браузере.
На самом деле, это простой пример моего основного проекта.
Я использую ASP.NET Ядро для программирования на стороне сервера. вот мои коды:
на стороне сервера :
public IActionResult addlink(string link)
{
return Redirect("/home/showlink?key=" link);
}
public IActionResult showlink(string key)
{
return Content("this is content from 2nd controller");
}
клиентская сторона :
<form>
<input type="text" id="mainlink"/>
<button id="btn">submit</button>
</form>
<script>
$("#btn").click(function () {
$.ajax({
type: "POST",
url: "/home/addlink",
data: {
"link": $("#mainlink").val()
},
success: function (response) {
alert(response);
},
error: function (xhr, status, error) {
var err = eval("(" xhr.responseText ")");
alert(err.Message);
}
}
)
})
</script>
что я вижу в браузере :
в основном проекте я хочу отправить текст с контроллера на ajax call succes, только это, пожалуйста, помогите мне 🙂
Ответ №1:
Попробуйте вернуть Ok ActionResult:
public IActionResult addlink(string link)
{
return Ok("/home/showlink?key=" link);
}
Комментарии:
1. Имеет ли действие
public IActionResult addlink(string link)
атрибут [HttpPost]? Если это возможно, отправьте необработанный ответ, который вы видите в браузере.2. я опубликовал, что для атрибута [httppost] у меня нет проблем с получением данных из ajax, у меня проблема с отправкой ответа от второго контроллера «showlink»
3. В инструменте разработки браузера проверьте ваш запрос post. Я думаю, что все работает в соответствии с вашим кодом.
4. Вы пробовали
RedirectToAction
, в отличие отRedirect
Ответ №2:
Если вы добавляете ajax к кнопке отправки в форме, вы должны предотвратить поведение отправки формы по умолчанию.
<script>
$("#btn").click(function (e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "/home/addlink",
data: {
"link": $("#mainlink").val()
},
success: function (response) {
alert(response);
},
error: function (xhr, status, error) {
var err = eval("(" xhr.responseText ")");
alert(err.Message);
}
}
)
})
</script>