Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新按钮单击Laravel中AJAX的url_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript 更新按钮单击Laravel中AJAX的url

Javascript 更新按钮单击Laravel中AJAX的url,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我有一个简单的表单,在blade模板中有一个“提交”按钮和一个额外的“添加”按钮。在表单submit上,有一个到控制器的ajax回调,它验证提供的值。根据控制器返回的结果,我想更改“Add”按钮onClick事件。这是刀锋剪: <button id="theId" type="button" >Add</button> 基于所有源,location.href或window.location都应该将我重定向到不同的页面(在我的情况下,只是不同的子页面),但事实并非如此。经

我有一个简单的表单,在blade模板中有一个“提交”按钮和一个额外的“添加”按钮。在表单submit上,有一个到控制器的ajax回调,它验证提供的值。根据控制器返回的结果,我想更改“Add”按钮onClick事件。这是刀锋剪:

<button id="theId" type="button" >Add</button>
基于所有源,location.href或window.location都应该将我重定向到不同的页面(在我的情况下,只是不同的子页面),但事实并非如此。经过数小时的研究,我认为我得到了一个错误的按钮,或者ajax本身出了问题,但后来我添加了addButton.html行,效果很好。我在这里做错了什么?

从这里的MDN文档:,通过on*属性注册的处理程序将通过相应的on*属性可用,但不是相反

这意味着div的
onclick
属性仍然是HTML中的旧事件处理程序。 为了保持正常,请始终使用
addEventListener
方法注册事件侦听器。

从MDN文档中,通过on*属性注册的处理程序将通过相应的on*属性可用,但反过来则不可用

这意味着div的
onclick
属性仍然是HTML中的旧事件处理程序。
为了保持理智,请始终使用
addEventListener
方法注册事件侦听器。

看起来您试图将jQuery对象的
onclick
属性设置为函数,这不是在jQuery中设置单击事件处理程序的正确方法

您应该使用jQuery对象的方法来设置单击处理程序。并使用该方法删除上一个处理程序:

addButton.off('click');
addButton.click(function () {
  window.location="https://www.example.com";
})

看起来您正在尝试将jQuery对象的
onclick
属性设置为函数,这不是在jQuery中设置单击事件处理程序的正确方法

您应该使用jQuery对象的方法来设置单击处理程序。并使用该方法删除上一个处理程序:

addButton.off('click');
addButton.click(function () {
  window.location="https://www.example.com";
})

获取按钮,删除以前的单击事件,使用http/https前缀添加新事件,更改按钮文本

success: function(result){
   var button = document.querySelector('#theId');
   button.addEventListener('click', function () {
       window.location = 'https://www.google.it';
   });
   button.innerHTML = "my new button text";
}

获取按钮,删除以前的单击事件,使用http/https前缀添加新事件,更改按钮的文本

success: function(result){
   var button = document.querySelector('#theId');
   button.addEventListener('click', function () {
       window.location = 'https://www.google.it';
   });
   button.innerHTML = "my new button text";
}

尝试jQuery的
click()
函数:如何设置
addButton
?尝试jQuery的
click()
函数:如何设置
addButton
?我得到:“未捕获类型错误:addButton.removeEventListener不是函数”抱歉,我仍然指向您的旧代码,该变量应该是“button”我已经更新了代码我应该将什么作为第二个参数传递给removeEventListener?一个空函数?有效,它是一个空函数。请更新您的答案,以便我可以接受。这应该是您使用的旧函数,但在这种情况下,如果您仅在那里使用它,也可以将其设置为null。你也可以尝试使用新更改的代码吗?我得到:“未捕获类型错误:addButton.removeEventListener不是函数”抱歉,我仍然指向你的旧代码,该变量应该是“button”我已经更新了代码我应该将什么作为第二个参数传递给removeEventListener?一个空函数?有效,它是一个空函数。请更新您的答案,以便我可以接受。这应该是您使用的旧函数,但在这种情况下,如果您仅在那里使用它,也可以将其设置为null。你也可以试试新修改的代码吗?奇怪,这对我不起作用。我点击“添加”按钮,什么也没发生示例fiddle没有重定向页面,它在控制台中记录了一个字符串,以显示处理程序发生了更改。Siddle不允许您在窗口位置发生更改的地方共享fiddle,因此我无法向您显示,只需将此
window.location=”放在https://www.example.com";在单击处理程序中。很奇怪,这对我不起作用。我点击“添加”按钮,什么也没发生示例fiddle没有重定向页面,它在控制台中记录了一个字符串,以显示处理程序发生了更改。Siddle不允许您在窗口位置发生更改的地方共享fiddle,因此我无法向您显示,只需将此
window.location=”放在https://www.example.com";在单击处理程序中。它起作用了。