0

这对我来说有点复杂,我还是个新手,哈哈。考虑以下代码块。Jquery 的 Ajax 循环一个 php 块并将新的提要附加到一些 div。在这种情况下,PHP 返回多个结果作为示例,它返回“Name”和“Slogan”。在 ajax 收到结果后,我想将以下内容作为模板附加,但是 php 是一个变量,因为每次附加此模板时都会改变。这是html模板。

<div id="BuzFeedResult1">
<?php 
require_once 'php/db_conx.php';
$Result = mysql_query("SELECT * FROM profiles ORDER BY lastupdated DESC LIMIT 1") or  die (mysql_error());
while($row = mysql_fetch_array($Result))
{ ?>
          <div id="ProfileDiv">
            <div>
            <span class="flat-menu-button"><?php echo $row['name'];?></span>
            <span class="flat-menu-button"><?php echo $row['slogan'];?>
            </span>

<?php 
}?>
            </span>
            </div>
            </div>
    </div>

问题。我如何将上述模板放入此 div 中的 ajax 中。

var $buzfeedresults = $("<div id='BuzFeedResult" + counter + "'></div>");

然后相应地附加它,如下所示附加“div”。

var get_fb = (function() {
    var counter = 0;

    var $buzfeed = $('#BuzFeed');

    return function(){
        $.ajax({

        type: "POST",

        url: "../php/TopBusinesses_Algorythm.php"

     }).done(function(feedback) {

          counter += 1;

          //Divs being appended.

          var $buzfeedresults = $("<div id='BuzFeedResult" + counter + "'></div>");

          $buzfeedresults.text(feedback);

          $buzfeed.append($buzfeedresults);

          var $buzfeedDivs = $buzfeed.children('div');

          if ($buzfeedDivs.length > 10) { $buzfeedDivs.last().remove(); }

          setTimeout(get_fb, 4000);

    }).fail(function(jqXhr, textStatus, errorThrown) {

         var $buzfeedresults = $("<div id='BuzFeedError'></div>");

         $buzfeedresults.text('Error: ' + textStatus);

         if (typeof console !== 'undefined') {

         console.error(jqXhr, textStatus, errorThrown);
       }

   });

   };

   })();

   get_fb()

这个问题可能听起来不清楚,请在需要时询问清楚。如果 Json 可以更简洁更短,请建议我可以使用的结构。

4

2 回答 2

1

您可以通过带有响应的 split() 函数来做到这一点。

var response = "yes|||insert a title...and something more!"
var splitResult=response.split("|||");  
var yesNo=splitResult[0];  
var article=splitResult[1];
alert(yesNo+article);
于 2013-10-24T06:32:53.657 回答
1

更好的解决方案,作为分割你的结果,是对你的结果数据进行 json_encode 编码../php/TopBusinesses_Algorythm.php,然后你可以在done(function(feedback) { ... })函数中解码结果,并为每个 DIV 分别更新 HTML 内容。

您的 JS 代码示例:

function holdSession() {
  $.ajax({
    type: 'POST',
    url: '../php/TopBusinesses_Algorythm.php',
    success: function(data) {
      var ajax_data = jQuery.parseJSON(data);

      $('#total_count').html(ajax_data.total_count);
      $('#online_count').html(ajax_data.online_count);
      $('#online_users_count').html(ajax_data.online_users_count);
    }
  });

  setTimeout("holdSession()", 30000);
}

TopBusinesses_Algorythm.php 代码示例:

// here get your data and store it in a array, f.e.:
$result = array();

$result['total_count']        = 1000;
$result['online_count']       = 10;
$result['online_users_count'] = 5;

// finally output result using `json_encode` - {"total_count":1000,"online_count":10,"online_users_count":5}
echo json_encode($result);

第二种解决方案:

你的 JS 代码:

var counter = 0;

var get_fb = (function() {
  var $buzfeed = $('#BuzFeed');

  return function() {
    $.ajax({
      url: "../php/TopBusinesses_Algorythm.php"
    }).done(function(feedback) {
      counter += 1;

      //Divs being appended.

      var $buzfeedresults = $("<div id='BuzFeedResult" + counter + "'></div>");

      $buzfeedresults.html(feedback);

      $buzfeed.append($buzfeedresults);

      var $buzfeedDivs = $buzfeed.children('div');

      if ($buzfeedDivs.length > 10) {
        $buzfeedDivs.last().remove();
      }

      setTimeout(get_fb, 4000);
    }).fail(function(jqXhr, textStatus, errorThrown) {
      var $buzfeedresults = $("<div id='BuzFeedError'></div>");

      $buzfeedresults.text('Error: ' + textStatus);

      if (typeof console !== 'undefined') {
        console.error(jqXhr, textStatus, errorThrown);
      }
    });
  };
})();

get_fb();

TopBusinesses_Algorythm.php:

<?php 
require_once 'php/db_conx.php';

$result = mysql_query("SELECT * FROM profiles ORDER BY lastupdated DESC LIMIT 1") or die (mysql_error());

while ($row = mysql_fetch_array($result)) {
  echo '<div id="ProfileDiv">';
    echo '<div>';
      echo '<span class="flat-menu-button">'.$row['name'].'</span>';
      echo '<span class="flat-menu-button">'.$row['slogan'].'</span>';
    echo '</div>';
  echo '</div>';
}
?>
于 2013-10-24T07:01:41.747 回答