2017-10-04 69 views
-1

我試圖通過$.ajax返回HTML,這是我的代碼:

$(document).ready(function() { 

    $(".click").on('click',function() {     
     var id= $(this).attr("data-id"); 

     $.ajax({  
     type: "POST", 
     url: "getevents.php", 
     data: {id:id}, 
     dataType: "html",     
     success: function(response){      
      alert(response); 
      $('.headimg').html(response); 
     } 
    }); 
})}) 

我的PHP代碼:

$singleevent = mysqli_query($link, "SELECT `content` FROM `events` WHERE `id` 
= $id") ; 
if(!$singleevent){ 
    echo mysqli_error(); 
} 
else { 

$result = mysqli_fetch_array($singleevent); 
echo $result; 
} 

鏈接被點擊:

<a class='click' data-id='<?=$rows["id"];?>'><?=$rows['title'];?></a> 

在警報()這是我得到陣列

如果我這樣做,而不是回聲的print_r(),這是我所得到的

[0] => <div class='row'> 
    <div class='col-sm-12'> 
    <img src='img/img.png' class='img-responsive'> 
    </div> 
    <div class='col-xs-12'> 
    <p> October 14th | All Day</p> 

    </div> 

</div> 
    [content] => <div class='row'> 
    <div class='col-sm-12'> 
    <img src='img/img.png' class='img-responsive'> 
    </div> 
    <div class='col-xs-12'> 
    <p> October 14th | All Day</p> 

    </div> 

</div> 

如何我把它放在HTML而不是陣列?

+2

也許在您的javascript中,您的html字符串是數組的第一個元素。嘗試'$('。headimg')。html(response [0]);' – TKoL

+0

嘗試JavaScript中的'Array.join'函數:'$('。headimg')。html(response.join('')) ;' – xander

+0

你的代碼中有錯別字:'echo $ reseult;' '而不是'$ result' – Grasper

回答

1

結果是你得到的,如果你這樣做echo array(1,2,3),你不能回顯數組。除此之外,一個PHP數組不是一個Javascript數組,所以JavaScript不理解結果。

您目前從數據庫讀取,因爲你取它作爲fetch_array(),它有兩個值,它返回雙倍數據結果:
- 一旦作爲數值([0],[1],[2 ]等)
- 爲了解決這個問題,使用fetch_assoc()。這將只返回最後一個(名爲)

但是,你仍然有一個值的數組,所以當你嘗試回聲的時候JavaScript仍然會得到「數組」。你現在可以做echo $result['content'];來解決這個問題。


有一個(IMO)更好的方法,這是更復雜一點,但更大量消耗(如果你想2個或3或...返回的值?),這被稱爲JSON格式。

在PHP中,你會做echo json_encode($result);這將導致文本格式奇怪的外觀數組。現在你去你的JavaScript AJAX函數,並添加dataType: "json"它。您現在可以使用response.contentresponse.exampleresponse.whateverYouSelectInPHP

+0

爲什麼downvote? – Martijn