2017-07-26 175 views
0

我的$.post不工作,因爲我試圖從我的PHP文件中提取JSON數據,我不知道它爲什麼不顯示輸出的原因? 這是我的代碼。

HTML:

<pre id="love" type="submit" data-toggle="modal" data-target="#myModal" onclick="mymodal(\''+this["id"]+'\')">'+this["love"]+' students <i class="glyphicon glyphicon-heart fa-lg" style="color:red"></i></pre > 

其中this["id"]已經傳給mymodal()功能。

javascript代碼:

var list=''; 
    function mymodal(id){ 
    $.post('postname_.php',{post_id:id},function(data1){ 
    $.each(data1.result,function(){ 
    list+='<div class="modal fade" id="myModal" role="dialog">'+'<div class="modal-dialog">'+'<div class="modal-content">'+ 
    '<div class="modal-header">'+'<button type="button" class="close" data-dismiss="modal">&times;</button>'+ 
    '<h4 class="modal-title">Students who loved your post</h4>'+' </div>'+'<div class="modal-body">'; 
    list+='<h4 class="text-danger">'+this["finame"]+' '+this['sename']+'</h4>'; 
    list+='</div>'+'<div class="modal-footer">'+ 
    '<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>'+'</div>'+ 
    '</div>'+'</div>'+'</div>'; 
    $('#insert').append(list);}),'json' 
    }); 
    } 

我的PHP代碼:

<?php 
require("../vendor/library50-php-5/CS50/CS50.php"); 
CS50::init(__DIR__ . "/../config.json"); 

    $result=array(); 
    $frows3=CS50::query("SELECT * FROM userhit WHERE plove=? AND bypost=?",1,$_POST['post_id']); 
    foreach($frows3 as $frow3){ 
     $frow4=CS50::query("SELECT * FROM userinfopersonal WHERE user_id=? ",$frow3['user_id']); 
    $frow5=CS50::query("SELECT * FROM userprof WHERE user_id=? ",$frow3['user_id']); 
    array_push($result,array('finame'=>$frow4[0]['firstname'],'sename'=>$frow4[0]['secondname'],'url1'=>$frow5[0]['url'])); 

    }echo json_encode(array('result'=> $result)); ?> 

其中CS50 ::查詢提供了我的一切我的錶行滿足給定的查詢,沒有關於擔心,我查這是給予完美的json文件。主要問題是alert功能mymodal()正在工作,這意味着在點擊預標籤它進入功能,但$.post內部的警報不會執行。

回答

0

它看起來像'json'參數$.post()函數不在正確的函數範圍內。查看下面更新的代碼(我冒昧地刪除了多餘的字符串連接 - 我可能是錯的,但它似乎沒有實用性)。適當的間隔可以幫助捕捉這些語法錯誤。

var list=''; 
function mymodal (id) { 
    $.post('postname_.php', {post_id: id}, function (data) { 
     $.each(data.results, function (i, result) { 
      list+='<div class="modal fade" id="myModal" role="dialog"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal">&times;</button><h4 class="modal-title">Students who loved your post</h4></div><div class="modal-body">'; 
      list+='<h4 class="text-danger">' + result["finame"] + ' ' + result['sename'] + '</h4>'; 
      list+='</div><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">Close</button></div></div></div></div>'; 
      $('#insert').append(list); 
     }); 
    }, 'json'); 
} 

要看到不同之處,這裏是以更傳統的方式標籤的原始代碼。

var list=''; 
function mymodal(id){ 
    $.post('postname_.php',{post_id:id},function(data1){ 
     $.each(data1.result,function(){ 
      list+='<div class="modal fade" id="myModal" role="dialog">'+'<div class="modal-dialog">'+'<div class="modal-content">'+ 
      '<div class="modal-header">'+'<button type="button" class="close" data-dismiss="modal">&times;</button>'+ 
      '<h4 class="modal-title">Students who loved your post</h4>'+' </div>'+'<div class="modal-body">'; 
      list+='<h4 class="text-danger">'+this["finame"]+' '+this['sename']+'</h4>'; 
      list+='</div>'+'<div class="modal-footer">'+ 
      '<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>'+'</div>'+ 
      '</div>'+'</div>'+'</div>'; 
      $('#insert').append(list); 
     }),'json' 
    }); 
} 
+0

燁這是一個錯誤,是現在警報工作正常,但仍然'list'不追加到'#insert' –

+0

嘗試使用'$( '#插入')HTML(名單);'有關更多詳細信息,請參閱:http://api.jquery.com/Html/。 – Greenstick

+0

仔細一看,'$ .append()'應該可以工作。此代碼運行時,DOM樹中是否存在'#insert'元素? – Greenstick

0

您的JavaScript代碼是正確的(請在網上論壇尋求幫助之前格式化代碼)。 https://jsfiddle.net/s295zzmt/

您的HTML代碼看起來正確,可能是因爲它是從JavaScript代碼中複製粘貼的。但是既然你說裏面的alert功能正常,讓我們忽略它吧。

有兩種可能性。

  1. HTTP請求失敗
  2. 它在Firefox開發者工具返回無效JSON

檢查網絡選項卡/ Chrome開發者控制檯。確保XHR請求返回200 OK。如果是這樣,請檢查HTTP響應並確保它是有效的JSON。