【问题标题】:jQuery / Ajax: How to pass JS variable to specific PHP function [closed]jQuery / Ajax:如何将 JS 变量传递给特定的 PHP 函数
【发布时间】:2015-09-04 15:20:46
【问题描述】:

我是 PHP 新手,以前从未使用过 Ajax,所以我希望有人能帮助我。

我有一个单独的 functions.js 文件,用于存储我用于网站页面的所有 JS
到目前为止,与 db 的所有交换都是直接在页面上使用 PHP 完成的,到目前为止效果很好,但现在我有一个场景,我需要从 JS 文件启动它。

我的想法是我可以创建一个单独的 PHP 文件 (ajax.php) 来承载用于此目的的函数,然后 通过 Ajax 从 JS 文件将数据传递到这个 PHP 文件

到目前为止,我有以下内容,但由于 ajax.php 文件中有多个函数,我不确定如何将其传递给我需要的特定函数。 另外,我不确定我的 Ajax 调用是否设置正确。

有人可以帮我解决这个问题,也许还可以用几句话解释你的答案吗? 基本上,在这里我想将 JS 变量“itemID”传递给 PHP 函数 fetchTransMain,它应该用于变量 $itemID(变量 $trans 是在 PHP 中生成的)。

更新:我还需要知道如何从 JS 中的 PHP 函数获取结果。我还没有找到解决这个问题的方法,也许是通过 Ajax GET 调用??

我的 functions.js 文件中有什么:

var itemID = "someID";

$.ajax({
    url: "ajax.php",
    type: "post",
    cache: "false",
    data: itemID,
    success: function(){
        alert("success");
    },
    error: function(){
        alert("failure");
    }
});

...在我的 ajax.php 文件中:

function fetchTransMain($trans, $itemID){
    foreach($trans as $key => $val){
        if($val["ID"] == $itemID){
            echo $val["trans"];
        }
    }
}

提前非常感谢, 迈克

【问题讨论】:

  • 你需要寻找$_POST['data']来引入传递的数据
  • 通常我将 PHP 函数分开,每个文件一个。但是你可以在你的数据中发送一些东西(函数名)并在 PHP 中检查它来决定执行哪个函数。
  • @briansol:谢谢!
  • 您不能通过 HTTP 请求从“外部”调用特定的 PHP 函数。你可以做的是发送一个参数来告诉 PHP 脚本执行哪个功能,并在你的 PHP 脚本中使用 switch 语句来调用基于该值的特定函数。
  • Here are the basics 以及故障排除思路和技术。

标签: php jquery ajax post


【解决方案1】:

你必须将数据定义为一个对象:

$.ajax({
    url: "ajax.php",
    type: "post",
    cache: "false",
    data: {itemId: itemID},
    success: function(data) {
        console.log(data);
        alert("success");
    },
    error: function(){
        alert("failure");
    }
});

然后:

$itemId = $_POST['itemId'];
function fetchTransMain($trans, $itemID){
    foreach($trans as $key => $val){
        if($val["ID"] == $itemID){
            echo $val["trans"];
        }
    }
}

【讨论】:

  • 这太棒了 - 非常感谢!我如何从 JS 中的 PHP 获得结果?同样的事情只是用 get 而不是 post ?
  • 检查我的编辑。在您的成功函数中,您将获得 php.ini 的响应作为第一个参数。如果您想将多个值发送回您的 js,请查看 php.net 中的 json_encode 函数
  • 这太完美了——再次感谢!我会尽快接受。 :)
  • 没问题。很高兴为您提供帮助!
【解决方案2】:

我强烈建议您阅读一些关于 ajax 和 PHP 的教程,因为这个问题涉及的方面太多,我们无法在一个答案中全部解释。不管怎样,你想做的事情很常见,你的浏览器中有一个值,你想保存在你的服务器上。

第一部分几乎是正确的:

    $.ajax({
         url: "ajax.php",
         type: "post",
         cache: "false",
         data: {valueName: itemID},
         success: function(){
             alert("success");
         },
         error: function(){
             alert("failure");
         }
     });

只需注意 data 参数,您应该在那里传递一个带有名称的对象。该名称是您将在 PHP 上用于检索值的名称。

然后在服务器端:

function fetchTransMain($trans, $itemID){
    foreach($trans as $key => $val){
        if($val["ID"] == $itemID){
            echo $val["trans"];
        }
    }
}

$valueFromClient = $_POST['valueName'];
fetchTransMain($trans, $valueFromClient);

这里你必须使用 $_POST,因为我们在客户端选择了 type: "post"。

希望对你有帮助

【讨论】:

  • 非常感谢 - 解释非常好。这与taxicala 的建议类似,他早一点所以我会接受他的回答,但投票给你,解释肯定有帮助 - 很多。 :)
  • 感谢您的支持:D
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 2018-12-15
  • 2012-05-29
  • 1970-01-01
  • 2012-06-18
  • 2012-08-20
  • 2015-04-28
  • 1970-01-01
相关资源
最近更新 更多