Ajax 请求不发送我的对象数据

Ajax request not sending my object data

本文关键字:我的 对象 数据 请求 Ajax      更新时间:2023-09-26

我已经尝试了几个小时,无法弄清楚我做错了什么,我确定它缺少一些简单的东西,但任何帮助都会很棒。

我创建了一个动态填充的对象,这完美地工作,当 im 尝试通过 ajax 将数据发送到 php 进程页面时出现问题。

下面的代码是我为对象获取键和值的循环。

//build up dynamic datastring for ajax
            var dataString = ""
            dataString += "{";
            jQuery.each(obj,function(key, value) {
                dataString += "'"+key+"':'"+value+"',";
            });
            //remove last , then add the containing bracket
            dataString = dataString.slice(0,-1);
            dataString += "};";
            console.log(dataString);
                //do ajax
                jQuery.ajax({
                    url:'/builder/process-form.php',
                    type:'POST',
                    data:dataString
                }).done(function(data){
                    console.log(data);
                });
            });

我已经将 dataString var 写入控制台,这是输出{'type':'tickbox','fname':'Empty','value':'Empty','req':'Yes','valType':''};对于数据参数来说,这看起来结构正确?

在 php 页面上,我遍历所有帖子数据,这显示注意,如果我复制 {'type':'tickbox','fname':'Empty','value':'Empty','req':'Yes','

valType':''}; 在数据之后:行,那么这有效吗?

任何帮助将不胜感激

非常感谢

伊恩

也许我在你的过程中错过了一些东西,但你不需要构建一个看起来像对象的"数据字符串",只需发送对象:

  //do ajax
  jQuery.ajax({
       url:'/builder/process-form.php',
       type:'POST',
       data:obj
  }).done(function(data){
   console.log(data);
 });

然后你在 PHP 端得到 $_POST 的对象属性。

对于数据参数来说,这看起来结构正确?

不。您正在将源代码构建为 JavaScript 对象文本。您需要一个普通的 JavaScript 对象来表示data参数。

摆脱dataString和与之相关的一切。

data: obj

如果您确实想以这样的格式发送数据(而不是作为标准形式的编码数据),请使用 JSON(与您生成的几乎相同,但引用规则更严格),并且可以使用标准函数生成:

var datastring = JSON.stringify(obj);

但是,如果这样做,则必须在请求标头中指定它:

data: datastring,
contentType: "application/json",

并在 PHP 方面以不同的方式处理它。