#javascript #jquery #asp.net #asp.net-mvc #asp.net-mvc-2
#javascript #jquery #asp.net #asp.net-mvc #asp.net-mvc-2
Вопрос:
Может ли какой-либо орган мне помочь.
У меня есть этот код
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">
function GOTO() {
var datastring = "id=2";
$.ajax({
type: "POST",
url: "/Home/Index",
dataType: "json",
data: datastring,
success: function (json) { Complete(json.result); },
error: function (request, status, error) {
//alert("an error occurred: " error);
alert("Error saving data. Please contact support.");
}
});
}
function Complete(result) {
if (result == "success") {
alert("Success");
}
else {
alert("Failed");
}
}
</script>
<input type="button" value="submit" onclick="JavaScript:GOTO()" />
</asp:Content>
и мой код контроллера такой
[HttpPost]
public System.Web.Mvc.JsonResult Index(string datastring)
{
return Json(new { foo = "bar", baz = "Blech" });
}
Но он вообще никогда не попадает в мой контроллер, это что-то, что я делаю неправильно, на мой взгляд?
Спасибо
Комментарии:
1. Вы получаете сообщение об ошибке в консоли JavaScript при нажатии кнопки?
2. если он не попадает на серверную часть, у вас ошибка на стороне клиента, такие инструменты, как Firebug, должны помочь вам быстро определить их
Ответ №1:
Попробуйте передать data
вот так:
$.ajax({
type: "POST",
url: "/Home/Index",
dataType: "json",
data: { datastring: 'foo bar' },
success: function (json) { Complete(json.result); },
error: function (request, status, error) {
alert("Error saving data. Please contact support.");
}
});
Комментарии:
1. Спасибо, Дарин, я пробовал это, но безуспешно, я получаю сообщение об ошибке $ .ajax не определен. Спасибо
2. @user300485, тот факт, что вы получаете
$.ajax is undefined
ошибку, — это то, что вы должны были упомянуть в своем вопросе, поскольку тогда ответ был бы простым. При этом, тем не менее, я бы рекомендовал вам передавать параметры, как я показал в своем ответе, поскольку это позаботится о правильном кодировании URL-адресов.
Ответ №2:
function Complete(result) {
if (result == "success") {
altert("Success");
// ^ beware!
У вас синтаксическая ошибка в вашем коде.
Более того, вам не нужно указывать JavaScript:
протокол в onclick
атрибуте, вы просто определяете метку в этом месте. Еще лучше, вообще не назначайте прослушиватели событий в атрибутах HTML, но используйте ненавязчивый JavaScript, включая запасной вариант для редкого случая, когда JavaScript недоступен.
Обновление: если вы получаете ошибку « $.ajax
не определено», вы, вероятно, не включили jQuery на свою страницу. Добавить
<script type="text/javascript" src="path/to/jquery-X.X.X.js"></script>
На вашу страницу выше script
элемента, который использует $.ajax
(или любую другую функцию jQuery).
Комментарии:
1. Спасибо, Марсель, даже я изменил это, но у меня это не работает .. спасибо
Ответ №3:
это может зависеть от того, какие данные вы передаете. Ваш метод ожидает параметр с именем datastring, но вы передаете ‘id= 2’.
Комментарии:
1. Я изменил это на int id Andy, но все еще не попадает в контроллер? Спасибо