【问题标题】:ajax replace sent object data with a stringajax用字符串替换发送的对象数据
【发布时间】:2015-02-08 13:31:52
【问题描述】:

我有一个称为 ids 的循环,它根据列表中的内容生成一个数组,因此它会创建

id[one]
id[two]
id[three]...etc

我想使用 ajax 将它们的值与它们一起发布,但似乎总是出错。
我试过了

var posts "data:allow";
for (i=0; i<ids.lengh; i=1+1) { posts=posts+", "+ids[i]+":"+id[ids[i]]; }
$.ajax({
   url: 'Posts.php',
   type: 'POST',
   data: { posts }, 
   success: function(bfs) { $("#idPosts").html(bfs); }
});

但这会出现“...Unexpected token }...”?

我也尝试在数据中循环:位但也出现了错误

var posts ="data:allow";
$.ajax({
   url: 'Posts.php',
   type: 'POST',
   data: { for (i=0; i<ids.lengh; i=1+1) { ids[i]:[ids[i]], } }, 
   success: function(bfs) { $("#idPosts").html(bfs); }
});

但这会出现“......意外的令牌(......”?

我是否正在尝试做一些无法完成的事情,因为我似乎没有找到任何相关信息。

谢谢

编辑补充......

这就是我正在尝试使用的,

函数 fnFunc(){

var ids = [ "Page", "FirstName", "LastName" ];
var id = [];
for ( var i=0; i<ids.length; i=i+1 ) {
    id.push(ids[i]);
    id[ids[i]]=$("#id"+ids[i]).val(); if ( id[ids[i]]=="" ){ id[id[i]]=$("#id"+ids[i]).text(); }
}

var posts ="data:allow";
$.ajax({
    url: 'Posts.php',
    type: 'POST',
    data: {
        for (i=0; i<ids.length; i=1+1) { ids[i]:[ids[i]], }
    }, 
    success: function(bfs) { $("#idPosts").html(bfs); }
});

}

【问题讨论】:

  • 所有错误的可能性取决于您的代码显示您的网络服务
  • 您可以发布一个对象或字符串或数组,不要混淆!如果你发送一个字符串,它应该看起来像这样:data=allow&amp;var1=val1&amp;var2=val2
  • 应该是length 而不是lengh
  • ids.length 而非 ids.lengh 存在拼写错误。这可能会导致错误
  • 对不起? “显示您的网络服务”是什么意思,ta

标签: jquery arrays ajax loops post


【解决方案1】:

data: { posts } 不是有效的 javascript。

一个对象字面量由一个键和一个值组成(例如{posts: posts}

如果你想发送一个字符串,你可能想要data: posts,甚至更好:

$.ajax({
   url: 'Posts.php',
   type: 'POST',
   data: 'data:allow, ' + $.param(id), 
   success: function(bfs) { $("#idPosts").html(bfs); }
});

【讨论】:

    【解决方案2】:

    我认为是因为这个

    data: { for (i=0; i<ids.lengh; i=1+1) { ids[i]:[ids[i]], } }, 
    

    为什么不直接将id 传递为您的data

    $.ajax({
       url: 'Posts.php',
       type: 'POST',
       data: id, 
       success: function(bfs) { $("#idPosts").html(bfs); }
    });
    

    【讨论】:

      【解决方案3】:
         var posts = "data:allow";
          for (var i=0; i<ids.length; i++) { posts=posts+", "+ids[i]+":"+id[ids[i]]; }
          $.ajax({
             url: 'Posts.php',
             type: 'POST',
             data: { posts : posts }, 
             success: function(bfs) { $("#idPosts").html(bfs); }
          });
      

      原文中有几个语法错误。帖子=“”, 记得声明 'i' 否则它将是全局的。 长度拼写错误。 同样在示例中,我将始终递增并保持 2。这是故意的吗?

      什么是变量ids?它是对象数组还是整数数组?...如果是对象,那么代码应该是这样的:

      posts=posts+", "+ids[i].id+":"+id[ids[i]].value;

      ajax 请求中的“数据”应该是什么样的,取决于您的服务器的期望。您可以将帖子设置为数据值。

      更新代码: 在您的更新中,我看到您修复了所有初始语法错误。根据您的描述,我认为您正在寻找类似的东西。

      您是否只是将数据作为数组发送到服务器,或者是否需要对其进行字符串化或将其设置为属性,取决于您的服务器的期望。

      var ids = [ "Page", "FirstName", "LastName" ];
      var data = [];
      for ( var i=0; i<ids.length; i=i+1 ) {
          var value = $("#id"+ids[i]).val(); 
          if ( !value  ){
              value = $("#id"+ids[i]).text(); 
          }   
          var obj = {};
          obj[ids[i]] = value;
          data.push(obj);   
      
      }
      
      var posts ="data:allow";
      $.ajax({
          url: 'Posts.php',
          type: 'POST',
          data: data , //{ data : JSON.stringify(data) }
          success: function(bfs) { $("#idPosts").html(bfs); }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-11
        • 2016-04-15
        • 2020-07-04
        • 1970-01-01
        • 2017-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多