在 Jquery onclick 函数中添加 Spinner 函数
Adding Spinner Function inside Jquery onclick function
我有以下代码。
----HTML Part---
<div id="Optimize" class="Div"> Optimize </div>
----Jquery Part---
$('#Optimize').click(function()
{
var form_data = new FormData();
form_data.append('action',"Opt");
var perlURL= "$code";
$.ajax({
url: perlURL,
data: form_data,
type: 'post',
datatype: "script",
success: function(result) {
},
});
});
一旦用户点击优化,下面的 jquery 代码将执行并向用户显示结果。现在我需要在用户单击优化以显示数据正在加载时插入一个微调器。加载数据后,微调器应停止。所以我有两个功能。如果我插入这两个函数,Jquery 代码将如下所示。
$('#Optimize').click(function()
{
startSpin(); // ------------------------START SPIN HERE----------------
var form_data = new FormData();
form_data.append('action',"Opt");
var perlURL= "$this_code";
$.ajax({
url: perlURL,
data: form_data,
type: 'post',
datatype: "script",
success: function(result) {
stopSpin(); // --------------STOP SPIN HERE --------------
},
});
此代码应按预期工作。即,只要用户点击 "Optimize",微调器就会启动。但它没有启动。我感觉它立即以异步方式执行。
如何确保用户执行了startSpin();首先,然后是函数的后面部分?
我已经阅读了有关 promise() 的内容,并尝试了多种方法来同时执行这两个功能。但无法成功。
这肯定会对某人有所帮助。我尝试在 jquery 中使用绑定函数,并尝试将这两个函数绑定到 onclick 事件。它没有成功。
然而,在多次重试之后,我想到了在 javascript 函数中使用 jquery 函数。所以现在这两个函数都是普通的 javascript 函数。我做了以下事情。
-----------HTML CODE-------------
----------START SPIN HERE------------
<div class="Div" onclick="startSpin();setTimeout(function() { runopt(); }, 100); " > Run Optimization </div>
-----------SCRIPT CODE-------------
<script type="text/javascript">
function runopt() {
//$('#Optimize').click(function()
// {
var form_data = new FormData();
form_data.append('action',"Opt");
var perlURL= "$code";
$.ajax({
url: perlURL,
data: form_data,
type: 'post',
datatype: "script",
success: function(result) {
},
});
stopSpin(); // -----------------STOP SPIN HERE -----------------
// });
}
脚本中注释掉的值表示较早的代码。我在 html 侧的 onclick 上使用了这两个函数,并将第二个函数延迟了 100 毫秒。它成功了。第一个函数被允许 运行 然后第二个函数 { 运行opt() } 是 运行。
我有以下代码。
----HTML Part---
<div id="Optimize" class="Div"> Optimize </div>
----Jquery Part---
$('#Optimize').click(function()
{
var form_data = new FormData();
form_data.append('action',"Opt");
var perlURL= "$code";
$.ajax({
url: perlURL,
data: form_data,
type: 'post',
datatype: "script",
success: function(result) {
},
});
});
一旦用户点击优化,下面的 jquery 代码将执行并向用户显示结果。现在我需要在用户单击优化以显示数据正在加载时插入一个微调器。加载数据后,微调器应停止。所以我有两个功能。如果我插入这两个函数,Jquery 代码将如下所示。
$('#Optimize').click(function()
{
startSpin(); // ------------------------START SPIN HERE----------------
var form_data = new FormData();
form_data.append('action',"Opt");
var perlURL= "$this_code";
$.ajax({
url: perlURL,
data: form_data,
type: 'post',
datatype: "script",
success: function(result) {
stopSpin(); // --------------STOP SPIN HERE --------------
},
});
此代码应按预期工作。即,只要用户点击 "Optimize",微调器就会启动。但它没有启动。我感觉它立即以异步方式执行。
如何确保用户执行了startSpin();首先,然后是函数的后面部分?
我已经阅读了有关 promise() 的内容,并尝试了多种方法来同时执行这两个功能。但无法成功。
这肯定会对某人有所帮助。我尝试在 jquery 中使用绑定函数,并尝试将这两个函数绑定到 onclick 事件。它没有成功。
然而,在多次重试之后,我想到了在 javascript 函数中使用 jquery 函数。所以现在这两个函数都是普通的 javascript 函数。我做了以下事情。
-----------HTML CODE-------------
----------START SPIN HERE------------
<div class="Div" onclick="startSpin();setTimeout(function() { runopt(); }, 100); " > Run Optimization </div>
-----------SCRIPT CODE-------------
<script type="text/javascript">
function runopt() {
//$('#Optimize').click(function()
// {
var form_data = new FormData();
form_data.append('action',"Opt");
var perlURL= "$code";
$.ajax({
url: perlURL,
data: form_data,
type: 'post',
datatype: "script",
success: function(result) {
},
});
stopSpin(); // -----------------STOP SPIN HERE -----------------
// });
}
脚本中注释掉的值表示较早的代码。我在 html 侧的 onclick 上使用了这两个函数,并将第二个函数延迟了 100 毫秒。它成功了。第一个函数被允许 运行 然后第二个函数 { 运行opt() } 是 运行。