2017-10-28 79 views
1

在PHP中我可以做這樣的事情:Ajax調用以純字符串格式返回數據。

echo "<div>".$myvariable."</div>"; 

這將打印出我的div的HTML中爲其標籤的變量。不過最近,我需要使用jquery進行ajax調用。我對阿賈克斯有點熟悉,但我沒有太多用處。無論如何,我運行ajax代碼,它會將數據打印到我想要​​的HMTL元素框中,但是,div標籤會隨着內容本身一起打印並顯示!

整個返回數據幾乎是1個長字符串,而不是像我想要的那樣解析我的數據。我哪裏做錯了?爲什麼它只返回1個長字符串?

PHP代碼:

<?php 

require 'database.php'; 

$meal = $_POST['meals']; 

$meal_q = "SELECT item 
       FROM meal_ingredients 
       WHERE meal_name='$meal' 
       ORDER BY item"; 

$meal_c = $conn->query($meal_q); 
    while ($row = $meal_c->fetch_assoc()){ 
     $view_ingredient = $row['item']; 
     echo "<div>".$view_ingredient."</div>"; 
    }; 

?> 

jQuery代碼:

if($('body').hasClass('CreateMealPage')){ 

    $('tr').on('click', function(e){ 
     $('#sidebar').animate({right: '-200px'}, 500); 
     var meals = $(this).find('.meals').text(); 

     $.ajax({ 
      method: "POST", 
      url: 'meal_list.php', 
      data: {meals: meals}, 
      success: function(data) { 
      var sidebar = document.getElementById('sidebar'); 
      sidebar.innerHTML = ""; 
      sidebar.append(data); 
      } 
     }); 
    }); 

}; 

屏幕上顯示內容提煉:

<div>ingredientname</div> 
<div>ingredientname</div> 
<div>ingredientname</div> 

而不是:

ingredientname 
ingredientname 
ingredientname 
+0

$(「#sidebar.append(JSON.stringify(數據)); –

+0

可以粘貼從網絡面板服務響應 –

回答

2

只需更換

sidebar.innerHTML = ""; 
sidebar.append(data); 

sidebar.innerHTML = data; 

爲了回答您的評論,你可以使用與jQuery的以下

$(sidebar).append($(data)) 

所以jQuery的追加需要使用,而不是追加從dom api追加,它只在參數中使用一個節點元素。如果您仍然需要使用DOM API的追加,使用類似:

sidebar.append(document.createRange().createContextualFragme‌​nt(data)) 
+0

我不知道爲什麼這個工程,但它的工作原理。我猜它與附加功能有關?謝謝:) – Shawn

+0

append如果你仍然想使用它,你可以在循環中使用document.createElement api,或者使用sidebar.append(document.createRange()。createContextualFragment(data)) –

0

$.ajax()調用添加dataType: "html"的特性,如:

$.ajax({ 
     method: "POST", 
     url: 'meal_list.php', 
     dataType: "html", 
     data: {meals: meals}, 
     success: function(data) { 
     var sidebar = document.getElementById('sidebar'); 
     sidebar.innerHTML = ""; 
     sidebar.append(data); 
     } 
    }); 

這將通知調用預期的HTML數據,在響應正文中返回。

+0

我?嘗試過,但它仍然打印出div標籤作爲一個字符串。 – Shawn

相關問題