我正在处理 html表行(此刻是两个) ,如下所示,在其中单击按钮时:
= > 调用 JS / jQuery 代码(其中 Go 文本更改为 Converting )
= >,然后通过AJAX 将 convert.php 脚本转换为 mp4到mp3 。
html / php代码:
<?php foreach ($programs as $key => $program) { ?>
<tr data-index="<?php echo $key; ?>">
<td><input type="submit" id="go-btn" name="go-button" value="Go" data-id="<?php echo $key; ?>" ></input></td>
</tr>
<?php }?>
convert.php:
$f = $mp4_files[$_POST['id']];
$parts = pathinfo($f);
switch ($parts['extension'])
{
case 'mp4' :
$filePath = $src_dir . DS . $f;
system('C:\ffmpeg\bin\ffmpeg.exe -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3', $result);
print_r("Hello World");
break;
}
JS / jQuery代码:
$("input[name='go-button']").click( function() {
// Change the text of the button, and disable
$(this).val("Converting").attr("disabled", "true");
});
一旦按钮被点击时的 HTML / PHP代码 上面的文字会从改变 进入 到 转换 ,因为我已经在我的代码库中添加JS /
jQuery的代码,但我已经添加了这个JS / jQuery代码只是改变的UI纯文本。 实际上并不知道转换是在后台进行的 。
问题陈述:
我想知道我需要在上面的 JS / jQuery 代码中进行哪些修改,以便UI实际上知道转换是在后台进行的。
可能我们需要在上面的 JS / jQuery 和php代码之间添加make建立一些连接,但是我不确定如何做到这一点。
首先,让我们修复html。你并不需要name
或id
在您的按钮属性和因为你是在一个循环中写他们,他们不会是唯一的。只需将它们替换为class="converter"
。该<input>
标签不需要关闭</input>
。
一个submit
类型按钮有一个默认的行为(你不想与一个Ajax请求相结合)。您可以e.preventDefault();
像这样使用标签,也可以将标签更改为不会触发表单提交的标签。
未经测试的代码:
js
$(document).ready(function () {
$("input.converter").click(function (e) {
e.preventDefault();
let btn = $(this);
btn.val("Converting").attr("disabled", "true");
$.ajax({
cache: false,
type: "POST",
dataType: "json",
data: {id: btn.data('id')},
url: "convert.php",
success: function(response) {
btn.val(response.message).attr("disabled", response.message == "Converted" ? "false" : "true");
},
error: function (jqXHR, status, err) {
console.log("Request failed: " + status);
},
complete: function (jqXHR, status) {
console.log("Done. No matter the outcome");
}
});
return false;
});
});
PHP
if (empty($mp4_files[$_POST['id']])) {
exit(json_encode(['message' => 'Failed']);
}
$f = $mp4_files[$_POST['id']];
$parts = pathinfo($f);
switch ($parts['extension'])
{
case 'mp4' :
$filePath = $src_dir . DS . $f;
system('C:\ffmpeg\bin\ffmpeg.exe -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3', $result);
exit(json_encode(['message' => 'Converted']);
}
exit(json_encode(['message' => 'Invalid File Type']);
这是一个快速演示(在本地测试可以正常工作):
main.php
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
$("button").click(function (e) {
e.preventDefault();
let btn = $(this);
btn.html("Converting...").attr("disabled", "true");
$.ajax({
cache: false,
type: "POST",
dataType: "json",
data: {id: btn.data('id')},
url: "convert.php",
success: function(response) {
btn.html(response.message)
.attr("disabled", response.message != "Bad"); // re-enables if Bad
}
});
});
});
</script>
</head>
<body>
<?php
for ($i = 0; $i < 3; ++$i) {
echo "<div>{$i}: <button data-id=\"{$i}\">Convert</button></div>";
}
?>
</body>
</html>
convert.php
<?php
$lookup = [
'Good',
'Bad'
];
sleep(1);
echo json_encode(['message' => $lookup[$_POST['id']] ?? 'Error']);
效果如何:
-------------------------------------------启用->禁用… …->禁用
我正在设计一个简单的应用程序,当按下开始按钮时,会调用myfunction()。myfunction()需要几秒钟才能完成。现在,当我按下开始按钮时,myfunction()会运行几秒钟,完成后,按钮的文本变为“停止”。我希望按钮的文本更改为“停止”一旦“开始”按钮被按下之前,该功能被调用。 这是我第一次使用Android Studio和Java。感谢您的帮助。 我附加了当按下按钮时调用的函数。
我在一个HTML页面上有2个按钮组。每组3到4个按钮(使用引导程序的按钮)。我想使用Javascript在没有onclick的情况下更改点击时的颜色按钮。 用户将单击组1中的任何按钮(单击“将颜色改为绿色”时),然后单击组2中的按钮,而不取消选择组1中的按钮。 null null
我正试图改变Android中旋转器按钮的颜色,但我无法让它工作。有人能帮忙吗?
这里有一个小问题,就像我在对话框中有回收人员视图fragment.ie在回收人员视图中的银行名称当我们在回收人员视图中选择一家银行并在对话框片段后解雇该名称应该出现在按钮上,即当我们从对话框片段中选择联合银行时,它应该出现在按钮上。问题是当我们单击按钮时,它的文本会发生变化,而不是在解散监听器的时间 这是Dialog解雇代码: 以下是onclick事件,其中打开对话框并打印值: 在以下方面相同:
我正在使用javaFX。我做了一个按钮并为此设置了一个图像。代码是: 但是我想当我点击按钮时,图像会变成另一张图片。我该怎么做呢?
我在flutter上开发一个应用程序,在主屏幕上我有一个按钮,打开另一个屏幕,这是在一个方法。在那个屏幕上,我想做一些计算,比如接受用户输入和更新文本字段,在单击按钮时,方法calculateAmount被称为更新变量total,它反映在文本字段上,但文本字段没有更新,它只在按键盘上完成时更新...如何才能完成这个任务。下面是我的代码: