【问题标题】:Ajax JQuery - Append Returned Variables + Input Button and Span to DivAjax JQuery - 将返回的变量 + 输入按钮和 Span 附加到 Div
【发布时间】:2020-04-28 14:06:10
【问题描述】:

使用来自 Ajax 请求的变量创建输入按钮和 span 标签,显示每个帖子的点赞数(这是用于留言板),但使用 JQuery 的字段连接超出了我的范围。之前只使用 php/html 进行过这项工作,但想使用 Ajax/JQuery 使其更简洁。

尝试使用JQuery实现以下逻辑:

<div class="content">
  <div class="post-action">

<input type="button" value="Like" id="like_<?php echo $ID . "_" . $UserID; ?>" class="like" style="<?php if($type == 1){ echo "color: #ffa449;"; } ?>" />&nbsp;(<span id="likes_<?php echo $ID . "_" . $UserID; ?>"><?php echo $total_likes; ?></span>)&nbsp;
  </div>
</div>

JQuery 基本尝试,但不确定语法/逻辑(没有在页面上填充 html,但 Ajax 请求正在工作):

success: function(response) {

$(".content").html("")
for( var key of Object.keys( response ) ) {
$( '.content' ).append( `<div class="post-action">
    <input type="button" value="Like" id="like_${response[key].ID}_${response[key].UserID}></div>`);    
    }
 }

Ajax 请求返回的 JSON 数组数据:

$data[] = array ( 'ID' => $row['ID'], 'UserID' => $row['UserID'], 'UserIDLikeChk' => $row['UserIDLikeChk'], 'MessageText' => nl2br(htmlentities($row['MessageText'],ENT_COMPAT|ENT_IGNORE, "UTF-8") ), 'cntLikes' => $row['cntLikes'], 'Type' => $row['Type'] );

【问题讨论】:

    标签: jquery html ajax append concat


    【解决方案1】:

    更新数据结构:

        success: function(response) {
        $(".content").html("");
          $.each(response, function() {
              $.each($(this), function(i, item) {
    var mycss =(item.Type == 1) ? ' style="color: #ffa449;"' :'';
                  $( '.content' ).append( '<div class="post-action"><input '+mycss+' type="button" value="Like" id="like_'+item.ID+'_'+item.UserID+'"><span id="likes_'+item.ID+'_'+item.UserID+'">'+item.cntLikes+'</span></div>');
              });
          });
        }
    

    字符串和变量在您的代码中混合在一起,没有分离。 Javascript 中的 + 字符是 pHp 中用于字符串连接的点 (.) 的替代品。

    而且在追加内容时最好避免换行。

    我必须在 pHp 中对您的数组进行编码,以了解您得到了什么,但我仍然不确定,但我假设您可以在这里接收多个对象。

    不要忘记将dataType: 'json', 添加到您的 ajax 选项中。

    【讨论】:

    • 谢谢@Bilel。我已经修改了原来的问题。它是从 Ajax 请求返回的 JSON 数组。您的语法是否也适用于添加 CSS。而且我不太确定如何将 if 逻辑添加到字符串中。再次感谢您的帮助。
    • 从 php 到 javascript 的翻译 :) 我希望它现在对你有用...
    • 你能解释一下答案中两个 each 循环背后的逻辑吗?我还是一个初学者。谢谢。
    • 按照这个 json 结构,我在 php 代码中发现我们可以接收数组中的对象列表。所以父 each() 用于父数组,嵌套 each() 用于循环遍历它的嵌套对象。如果您的父数组只有一个列表,则不必使用此嵌套循环...并将其替换为 $.each(response[0],...。Php 将决定我们遵循哪种最佳 json 结构。所以是的,出于优化目的,您可以更改我上面编写的代码。
    猜你喜欢
    • 2012-06-19
    • 2013-05-02
    • 2011-06-02
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多