jQuery / Ajax:如何将JS变量传递给特定的PHP函数

时间:2015-06-18 19:56:31

标签: php jquery ajax post

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

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

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

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

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

更新:我还需要知道如何从JS函数中获取PHP函数的结果。我还没有找到一种方法,也许是使用Ajax GET调用?

我的functions.js文件中包含的内容:

$itemID

...和我的ajax.php文件:

var itemID = "someID";

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

非常感谢, 麦克

2 个答案:

答案 0 :(得分:5)

您必须将数据定义为对象:

$.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"];
        }
    }
}

答案 1 :(得分:3)

我强烈建议你阅读一些关于ajax和PHP的教程,因为这个问题涉及很多方面,我们无法在一个答案中解释它们。无论如何,您想要做的事情非常普遍,您在浏览器中有一个值要保存在服务器上的值。

第一部分几乎是正确的:

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

只需支付数据参数,你应该传递一个带有名字的对象。该名称是您在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”。

希望这有帮助