我正在学习js,还不太了解。我有一个 mvc 项目。它使用 ajax 请求。并根据请求的结果,无论是成功还是错误,都会执行该函数。如果我直接在 ajax 函数请求本身中编写,一切正常。我尝试写入第三方文件,但一切都与我预期的有所不同。以下是带有函数的第三方文件的代码:
$(function successFunc (data) {
alert('Успех');
$('#results').html(data);
});
$(function errorFunc(xhr) {
alert(xhr.status + 'Ошибка');
});
文件本身包含在布局中:
@Scripts.Render("~/scripts/Result.js")
这是带有ajax请求的视图代码:
@{
ViewBag.Title = "Index";
}
<div>
<input type="text" name="name" id="txt" />
<input type="button" id="btn" class="edit" value="Отправить" />
@section scripts {
<script type="text/javascript">
$('#btn').on('click', function () {
$.ajax({
type: "POST",
url: "/Home/BookSearch",
data: { "name": $('#txt').val() },
success: successFunc(data),
error: errorFunc(xhr)
});
});
</script>
}
<div id="results"></div>
</div>
因此,这两个函数都会在应用程序启动时立即执行。以及如何使它们仅在 ajax 请求的结果上执行,因为它应该是?
视图内带有函数的代码:
@{
ViewBag.Title = "Index";
}
<div>
<input type="text" name="name" id="txt" />
<button id="btn">Отправить</button>
@using (Ajax.BeginForm("BookSearch", new AjaxOptions { UpdateTargetId = "results" }))
{
<input type="text" name="name" />
<input type="submit" value="Поиск" />
}
@section scripts {
<script type="text/javascript">
$('#btn').on('click', function () {
$.ajax({
type: "POST",
url: "/Home/BookSearch",
data: { "name": $('#txt').val() },
success: function (data) {
alert('Успех');
$('#results').html(data);
},
error: function (xhr) {
alert(xhr.status + 'Ошибка');
},
});
});
</script>
}
<div id="results"></div>
</div>
您正在将您的函数传递给 furntia
$,它会立即执行它们。你只需要声明它们: