使用参数/ AJAX调用PHP函数



您好,我想在用户单击按钮时致电我的功能下载,基本上是:

<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 + "&param2=" + 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")时,它将触发其父级formsubmit事件。然后,jQuery收听此事件并立即使用èvent.preventDefault()将其阻止,以调用AJAX,而不是定期同步调用PHP文件。

最新更新