美好的一天,
我有一个按钮
update
那正在调用一个ajax函数
$(document).ready(function () {
function UpdateStatus(Id) {
$.ajax({
type:"Post",//or POST
url: '/myController/UpdateSomething?Id=' + Id,
// (or whatever your url is)
data: { data1: var1 },
success: function (responsedata) {
// process on data
alert("got response as" +"'" + responsedata +"'");
}
});
}
}
我的问题是我收到一个错误:
UpdateStatus is not defined at HTMLButtonElement.onclick
我究竟做错了什么? 谢谢
更新资料
当我尝试运行此代码
@section scripts
{
$(document).ready(function () {
//Carga datos del curso
console.log("asdf");
});}
我没有在控制台中收到该消息。
function F(user_id) {
var user_id = user_id;
$.ajax({
type:"GET",
url:"http://127.0.0.1:8000/preference",
data: {'user_id':user_id},
async: false,
success: function (result) {
console.log(result)
}
});
}
第一行自动不显示。它是脚本的类型和src属性。我使用了" text / javascript"和" http://code.jquery.com/jquery-latest.js"。
这个问题我找到2个解决方案。一种如上所述。将脚本分为两部分。其次是将功能移到按钮标签下。
这确实是一个范围问题。但是我没有找到解决方案的逻辑。但是我解决了。
这绝对是一个范围问题,因为UpdateStatus在document.ready()函数的范围内定义。您可以将UpdateStatus声明为document.ready()块之外的变量,并在其中声明一个函数:
var UpdateStatus;
$(document).ready(function () {
UpdateStatus = function () {
var buttonId = $('#4').attr('id');
$.ajax({
type:"POST",
url: '/myController/UpdateSomething',
data: { Id: buttonId, ... }, // setting parameters
success: function (responsedata) {
// process on data
alert("got response as '" + responsedata +"'");
}
});
}
});
另外,根据标准事件注册模型和关注点分离,建议您通过检索按钮ID来使用不干扰JavaScript的代码,如下所示:
$(document).ready(function () {
$('#4').click(function() {
var buttonId = $(this).attr('id');
$.ajax({
type:"POST",
url: '/myController/UpdateSomething',
data: { Id: buttonId, ... }, // setting parameters
success: function (responsedata) {
// process on data
alert("got response as '" + responsedata +"'");
}
});
});
});
由于您使用的是AJAX POST,因此无需在url: '/myController/UpdateSomething?Id=' + Id之类的URL中使用查询字符串参数。
相关问题:
未捕获的ReferenceError :(函数)未在HTMLButtonElement.onclick上定义
为什么内联事件处理程序属性在现代语义HTML中是个坏主意?
问题是,您正在jQuery的document.ready事件中定义方法定义。解析并呈现按钮标记时,未定义JavaScript方法,因此会出现错误。
当文档准备就绪时,jquery ready方法将在稍后执行(HTML的解析和渲染已完成,可以安全地访问DOM)。至此,HTML已被渲染。
在它外面定义它。
function UpdateStatus(Id) {
alert('UpdateStatus called');
}
$(function () {
});
另一种选择是使用非联合JavaScript。因此,您无需在单击事件处理程序与按钮标记之间建立连接,而是在激发文档就绪后再进行连接。
update
并连接点击事件
$(function () {
$("#4").click(function (e) {
e.preventDefault();
alert('User clicked');
});
});
你好,谢谢,你能看到我的最新消息吗? 谢谢
检查您的浏览器控制台,看是否有脚本错误