从AJAX调用Php函数无效

Call Php Function From AJAX Not Working

本文关键字:函数 无效 Php 调用 AJAX      更新时间:2023-09-26

我正在尝试使用AJAX调用一个PHP函数。下面是我使用的脚本。

<script type="text/javascript" src="jquery.1.4.2.js">
    $(document).ready(function () { 
               // after EDIT according to 
               // @thecodeparadox answer
       $('#local').click(function(e){
            e.preventDefault();
            e.stopPropagation();
            promptdownload();
       });
    });
        function promptdownload(e) 
        {
        $.ajax({
             type: "POST",
             url: "js/prompt.php",
             data: { "get" : "runfunction", "action" : "promptlocal" },
             success: function (response) {
             }    
         });
        }
</script>

相应的PHP代码(prompt.PHP)是:

<?php
$path1 = "downloads/1.jpg";
$browserFilename1 = "Local Travel";
$mimeType1 = "image/jpeg";

function promptToDownload($path, $browserFilename, $mimeType)
{
    if (!file_exists($path) || !is_readable($path)) {
        return null;
    }
    header("Content-Type: " . $mimeType);
    header("Content-Disposition: attachment; filename='"$browserFilename'"");
    header('Expires: ' . gmdate('D, d M Y H:i:s', gmmktime() - 3600) . ' GMT');
    header("Content-Length: " . filesize($path));
    // If you wish you can add some code here to track or log the download
    // Special headers for IE 6
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    $fp = fopen($path, "r");
    fpassthru($fp);
}
if ($_POST["action"] = 'promptlocal')
{
    promptToDownload($_GET[$path1], $browserFilename1, $mimeType1);//comments
}
?>

这就是我对应该触发功能的按钮进行编码的方式:

<input type="button" id="local" name="local" value="Local Travel">

我期望的输出是让这个按钮提示用户:"保存1.jpg文件的位置"

然而,我无法使它发挥作用。

如有任何建议,不胜感激。

$('local').click(function(e){

应该是

$('#local').click(function(e){

由于local是一个id,所以你应该在它之前使用#。而且在你的php代码中也有一些缺失的引号。

使用Firebug(FF)、Dragonfly(Opera)、Developer Tools(Chrome)。您可以看到所有javascript错误、警告和异常,还可以看到ajax请求数据。

data: { "get" : "runfunction", "action" : "promptlocal" }, 

尝试删除"get"answers"action"中的引号。

像这样:

    data: { get : "runfunction", action : "promptlocal" }, 

在我看来,您正试图用jquery/ajax下载一个文件。只有ajax才能实现这一点。这个问题在stackoverflow上已经回答了好几次了。

我希望这个链接能帮助你:使用Jquery下载Ajax文件,PHP