您好,我想在用户单击按钮时致电我的功能下载,基本上是:
<input type='button' name='Release' onclick="document.write('<?php downloadFichier($tab1, $t2) ?>');" value='Click to Release'>
当然不起作用,所以我尝试使用Ajax,我不知道这种语言,但是可以做我想做的事情:使用2个参数调用我的PHP函数?
<button type="button">Click Me</button>
<p></p>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$.ajax({
type: 'POST',
url: 'file_product.php',
success: function(data) {
$("p").text(data);
}
});
});
});
</script>
谢谢您的帮助。
您应该使用此类事件调用JS功能:
<input type='button' name='Release' onclick="downloadFichier(param1, param2)" value='Click to Release'>
,您的Ajax功能应该是这样的:
function downloadFichier(param1, param2){
$.ajax({
type: 'POST',
url: 'file_product.php',
data: "param1=" + param1 + "¶m2=" + param2,
success: function(data) {
$("p").text(data);
}
});
您可以通过$ _request数组的名称(param1,param2)。
@paulbasenko启发了此替代方案,在其中您通过某些<input type="hidden" />
设置了参数:
html
<form action="#" method="POST" id="form1">
<input type="hidden" name="tab1" value="<?= $tab1 ?>" />
<input type="hidden" name="t2" value="<?= $t2 ?>" />
<button type="submit">Click to Release</button>
</form>
javascript
$(function() { // equivalent of "$(document).ready(function(){"
$('body').on('submit', '#form1', function(event) {
event.preventDefault();
var formData = $(this).serialize();
$.ajax({
type : 'POST',
url : 'file_product.php',
data : formData,
success : function(data) {
$('#p').text(data);
}
});
});
});
php
<?php
$tab1 = (isset($_POST['tab1'])) ? $_POST['tab1'] : null;
$t2 = (isset($_POST['t2'])) ? $_POST['t2'] : null;
// process & return json_encoded data
?>
如何工作?
单击按钮(即type="submit"
)时,它将触发其父级form
的submit
事件。然后,jQuery收听此事件并立即使用èvent.preventDefault()
将其阻止,以调用AJAX,而不是定期同步调用PHP文件。