Javascript 在使用.each制定选项时,无法使用$.POST请求读取$\u POST值

Javascript 在使用.each制定选项时,无法使用$.POST请求读取$\u POST值,javascript,php,jquery,ajax,.post,Javascript,Php,Jquery,Ajax,.post,使用.each公式化我的选项字符串,并通过.post将其发送到外部脚本 clicked.closest("form").find("input,textarea").each(function(){ var input=$(this); if(index==1){ options = "{"+input.attr("name")+":'"+input.val()+"'"; }e

使用.each公式化我的选项字符串,并通过.post将其发送到外部脚本

        clicked.closest("form").find("input,textarea").each(function(){
            var input=$(this);
            if(index==1){
                options = "{"+input.attr("name")+":'"+input.val()+"'";
            }else if(index==no_inputs){
                options += ","+input.attr("name")+":'"+input.val()+"'}";
            }else{
                options += ","+input.attr("name")+":'"+input.val()+"'";
            }
            index++;
        });
        alert(options);
        $.post('../pages/ajax/add_orders.php',options,function(data){
            alert(data);
        });
…问题是当我的php调用脚本为

    <?php
        print_r($_POST);
    ?>

我只是得到一个没有值的空数组

第一个警报正确显示公式化字符串

但是第二个返回一个空值


非常感谢您的帮助。

您的帖子需要是一个实际对象,您正在创建一个字符串

    clicked.closest("form").find("input,textarea").each(function(){
        var input=$(this);
        if(index==1){
            options[input.attr("name")] = input.val();
        }else if(index==no_inputs){
            options[input.attr("name")] = input.val();
        }else{
            options[input.attr("name")] = input.val();
        }
        index++;
    });
我认为上述方法会奏效。

试试以下方法:

var options={};
clicked.closest("form").find("input,textarea").each(function(){
    var input=$(this);
    options[input.attr("name")] = input.val();
});

如果您试图将数据作为请求参数或请求正文发送,您可以尝试
$.post('../pages/ajax/add_orders.php',clicked.closest(“form”).serialize(),function(data){alert(data);})不要手动构建JSON!谢谢你,阿伦。救了我一天,谢谢迈克的提醒。我真蠢。