JavaScript在没有在Laravel中调用的情况下运行

JavaScript在没有在Laravel中调用的情况下运行,javascript,php,jquery,laravel,Javascript,Php,Jquery,Laravel,我有一个input type=“button”-元素,如下所示的代码以及同一页面中的JavaScript。我尝试在用户按下按钮后更新表列。但问题是,JavaScript函数在执行时甚至没有单击按钮 另一件奇怪的事情是,我甚至不把 onclick="updatePendingStatus()" 但表列仍在更新 为什么会这样 我的实际目标是,当用户单击按钮时,将执行一个查询(代码在JavaScript函数中声明) 查看 <input type="button" class="btn btn-

我有一个
input type=“button”
-元素,如下所示的代码以及同一页面中的JavaScript。我尝试在用户按下按钮后更新表列。但问题是,JavaScript函数在执行时甚至没有单击按钮

另一件奇怪的事情是,我甚至不把

onclick="updatePendingStatus()"
但表列仍在更新

为什么会这样

我的实际目标是,当用户单击按钮时,将执行一个查询(代码在JavaScript函数中声明)

查看

<input type="button" class="btn btn-primary" onclick="updatePendingStatus()">

<script type="text/javascript">
function updatePendingStatus()
{ 
  //assume $variable is a variable that send from controller
  {{ App\Furniture::where('id', $variable)->update(['furniture_status' => 5]) }}
}
</script>

函数updatePendingStatus()
{ 
//假设$variable是从控制器发送的变量
{{App\Furniture::where('id',$variable)->update(['Furniture\u status'=>5])}
}

解决您正在做的事情的最简单方法是执行表单发布。Javascript在web浏览器中运行,而php在服务器上运行。这意味着没有php在用户计算机上运行,而这正是您试图做的。因此,只要刀片文件上的所有php都在服务器上运行,它就会执行更新请求

现在就这样做吧

HTML

MyController.php(将此函数与类声明一起添加到中)


执行此操作时,将刷新页面。如果您不想刷新页面,那么您可以先在jquery中执行
ajax请求。

您需要将
回调
传递给
onclick
函数,而不是执行它,因为单击按钮时浏览器将调用
回调
。但是现在只要呈现div,函数就被执行

拆下支架,这将解决您的问题

onclick=“updatePendingStatus”


让我知道这是否有用。

顺便说一句,updatePendingStatus()函数从不在任何js中声明,这是您第一次尝试将php封装到Javascript函数中。这就是为什么它在没有按下按钮的情况下运行的原因,如果你想让它工作,你需要看看类似ajaxany的东西如何做到这一点?这不是一个容易回答的问题,因为有几件事你误解了,你的目标不明确,如果你改变你的问题,问你应该如何实现你想要的结果,这将更容易回答。也包括这个作为你尝试的解决方案我已经更新了我的问题目前我正在使用这个方法,一切都很好…事实上,我试图避免在我的控制器中生成函数,因为有太多的控制器已经准备好了,然后再生成另一个控制器。如果你的控制器被1000行代码弄得臃肿不堪,这意味着一堆函数可能被丢弃在不应该被丢弃的地方。js仍在执行:(你真的确定吗?这不应该发生在理想情况下)。
<form action="/update_pending_status">
    <button type="submit" button="btn btn-primary">Submit</button>
</form>
Route::post('/update_pending_status', MyController@update_pending_status);
public function update_pending_status() {
    App\Furniture::where('id', $variable)->update(['furniture_status' => 5])
}