2013-10-24 55 views
0

我已经从原始的OP中编辑了这个问题,以更好地表示我的问题。变量不会传递给Ajax调用:undefined变量

如何将变量data-uid与AJAX一起传递?

现在变量不被传递。

var uid = $(this).data("uid");不起作用=未定义

var uid = '199';被传递。作品。

是否有可能有这样的东西:var uid = $uid;

HTML

<form> 
    <fieldset> 
    <textarea id="post_form" type="text" data-uid="<?php echo $uid ?>"/></textarea> 
    <button type="submit" id="add" value="Update" name="submit" />OK</button> 
    </fieldset> 
</form> 

JS

$(function() { 
$("#add").click(function() { 
    var boxval = $("#post_form").val(); 
    var uid = $(this).data("uid"); // this needs to be changed 
    var dataString = 'post_form=' + boxval + '&uid=' + uid; 
    if (boxval == '') { 
     return false; 
    } else { 
     $.ajax({ 
      type: "POST", 

     $.ajax({ 
      type: "POST", 
      url: "add.php", 
      data: dataString, 
      cache: false, 

      success: function(html) { 
      parent.html(html); 
      } 
     }); 
     return false; 
    }); 
}); 
+3

就可以显示相关的HTML? – karthikr

+0

'.like'元素看起来像什么? – scrappedcola

+3

你正在执行POST而不是GET,使用get和'url:“delete.php?”+ dataString' –

回答

1

问题在你的代码:

var uid = $(this).data("uid");

你想换this到jQuery对象,但正是在这样的背景下按钮的对象,那么你”重新尝试获取未分配的东西

你应该使用:

var uid = $('#post_form').attr('data-uid');

或者,您可以添加<input type="hidden" name=... value=...并从它那里得到ID,这是更普遍的方式

1

看起来你的问题是,应该是数据的uid = “someValue中” <a href="#" class="like" id="1234" data-uid="7687687">Like</a>的数据属性。

检查这个小提琴to see if this solves your main problem

+0

+1感谢您的回复。我的问题。当页面刷新'data-id =“<?php echo $ uid?>'回显正确的uid。问题是在AJAX回调期间:添加新项目时,'data-id'未定义。 –

+0

什么是html参数返回?一个新的元素? – McRui