【问题标题】:Using object in the jQuery post parameter在 jQuery post 参数中使用对象
【发布时间】:2026-01-31 02:45:01
【问题描述】:

我认为这是不可能的,但我想了解原因。 我想做这样的事情:

var pVals = {
    ob1: "postvar1",
    ob2: "postvar2",
    ob3: "postvar2"
};

$.post("php/dosomething.php",{pVals.ob1:"object 1", pVals.ob2:"object 2", pVals.ob3:"object 3"});

我收到如下错误:

缺少:在属性 id 之后

感谢您的帮助。

【问题讨论】:

    标签: jquery ajax post object parameters


    【解决方案1】:

    你可以得到相同的最终结果,只是不能在一个语句中做到:

    var pVals = {
        ob1: "postvar1",
        ob2: "postvar2",
        ob3: "postvar2"
    };
    
    var obj = {};
    obj[pVals.ob1] = "object 1";
    obj[pVals.ob2] = "object 2";
    obj[pVals.ob3] = "object 3";
    $.post("php/dosomething.php", obj);
    

    这是因为匿名哈希样式构造函数中的“键”仅被视为文字,它们本身不能是表达式。但是当你使用类似数组的引用时,你可以使用任何有效的javascript表达式来计算“key”。

    【讨论】:

    • 是的,我考虑过这种方法。但是我希望将名称和值放在单独的对象中,最初声明然后再调用。
    • 对不起,我再看一遍,这就是我需要的。谢谢:)
    【解决方案2】:

    我不一定知道如何按照您想要的方式进行操作。但是,您可以在 php 端发送对象和json_decode()

    JS:

    $.post("php/dosomething.php",{pNames:pNames, pValues:pVals});
    

    PHP:

    $p_names = json_decode($_POST['pNames']);
    $p_vals = json_decode($_POST['pValues']);
    
    for($i=0;$i<count($p_names);$i++){
       $$p_names[$i] = $p_vals[$i];
    }
    

    应该具有您正在寻找的相同效果。

    【讨论】:

    • 错误是客户端。我认为它不喜欢我的时期。此外,您似乎没有使用对象作为参数。
    • 你是对的。使用非对象参数将对象传递给 PHP 更像是一种解决方法。然后您可以使用json_decode 将对象转换为数组。如果有意义的话,它将允许您将 name 对象中的名称设置为值对象中的相应值的 php 变量。
    • 是的,显然有很多方法可以传递参数,但我一直在寻找上面的答案。感谢您的帮助。