Javascript 成功时在范围内显示数组字

Javascript 成功时在范围内显示数组字,javascript,php,jquery,arrays,ajax,Javascript,Php,Jquery,Arrays,Ajax,我有这个代码,它将显示带有复选框的单词。如您所见,它们由逗号分隔,我使用split()函数分解字符串,使其成为一个数组。我使用for循环来迭代单词,但是我得到了单词的“未定义”。它应该自动显示带有复选框的单词,但单词显示为未定义。当我点击refresh时,它会正确显示单词,并且有一个复选框。我不确定问题出在哪里。有什么想法吗 $(document).on('click', '#wordlistsave', function() { var user = $("#get

我有这个代码,它将显示带有复选框的单词。如您所见,它们由逗号分隔,我使用split()函数分解字符串,使其成为一个数组。我使用for循环来迭代单词,但是我得到了单词的“未定义”。它应该自动显示带有复选框的单词,但单词显示为未定义。当我点击refresh时,它会正确显示单词,并且有一个复选框。我不确定问题出在哪里。有什么想法吗

    $(document).on('click', '#wordlistsave', function() 
    {

    var user = $("#getUser").val();
    var title = $("#wordbanktitle").val();
    var word = $("#wordbanklist").val();
    var postID = $("#getPostID").val();
    var words = word.split(", ");


    for(var i = 0; i < words.length; i++)
    {                   
    var dataString = 'user='+user+'&title='+title+'&words='+words[i]+'&id='+postID;

    <?php if (is_user_logged_in()): ?>
      if(words[i])
      {

      $.ajax({ 
      type: "POST",
      url: "<?= plugins_url('wordlistsave.php', __FILE__) ?>",
      data: dataString,
      cache: true,
      success: function(postID)
      {

      var testBoxDiv = $(document.createElement('div')).attr("id", words[i]);
      testBoxDiv.css({"margin-bottom":"5px"});
      testBoxDiv.after().html('<span id="'+words[i]+'" style="cursor:pointer">\
        <img src="./wp-content/plugins/wordwork/admin/pdfpreview/delete_icon.png" title="Delete word"></span>\
      &nbsp&nbsp<input type="checkbox" name="words[]" value="'+ words[i]+ '">'+words[i] );
      testBoxDiv.appendTo("#test_container");   

      }
      });
      }


    <?php else: ?>
      alert('Please login.');
    <?php endif; ?>
    }    

    });      
$(文档)。在('click','#wordlistsave',函数()上
{
var user=$(“#getUser”).val();
var title=$(“#wordbanktitle”).val();
var word=$(“#wordbanklist”).val();
var postID=$(“#getPostID”).val();
var words=单词分割(“,”);
for(var i=0;i
单词可以从success函数中看到,但当它执行时,您无法确定
i
值,因为它不会同步执行。
所以,您可以将一个额外的参数words传递给ajax设置字典,并从success函数访问它。像这样:

$.ajax({ 
    type: "POST",
    url: "<?=plugins_url('wordlistsave.php', __FILE__ )?>",
    data: dataString,
    cache: true,
    word : words[i],
    success: function(postID)
    {

        var testBoxDiv = $(document.createElement('div')).attr("id", this.word);
        testBoxDiv.css({"margin-bottom":"5px"});
        testBoxDiv.after().html('<span id="'+this.word+'" style="cursor:pointer"><img src="./wp-content/plugins/wordwork/admin/pdfpreview/delete_icon.png" title="Delete word"></span>&nbsp&nbsp<input type="checkbox" name="words[]" value="'+ this.word+ '">'+this.word );
        testBoxDiv.appendTo("#test_container"); 

    }
});
$.ajax({
类型:“POST”,
url:“”,
数据:dataString,
是的,
单词:单词[i],
成功:功能(posted)
{
var testBoxDiv=$(document.createElement('div')).attr(“id”,this.word);
css({“边距底部”:“5px”});
testBoxDiv.after().html('nbsp'+this.word);
testBoxDiv.appendTo(“test#u容器”);
}
});

此外,您不需要为$.ajax构建数据字符串,只需像以下那样传递数据:

$.ajax({ 
    type: "POST",
    url: "<?=plugins_url('wordlistsave.php', __FILE__ )?>",
    data: {
        user: user,
        title: title,
        words: words[i],
        id: postID 
    }
$.ajax({
类型:“POST”,
url:“”,
数据:{
用户:用户,,
标题:标题,,
字:字[i],
id:posted
}

nice,很好用。我将调整css,因为它在单词上方添加了一个空格。