我的$.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">×</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 :: query为我提供满足给定查询的所有表格行,不用担心,我检查了它给出了完美的json文件。主要问题是函数alert
中的mymodal()
正在工作,这意味着在点击预标记时它会进入函数内部,但$.post
内的警报不会被执行。
答案 0 :(得分:0)
您的JavaScript代码是正确的(请在在线论坛寻求帮助之前格式化代码)。 https://jsfiddle.net/s295zzmt/
您的HTML代码看起来正确,可能是因为它是从JavaScript代码中复制粘贴的。但是,既然你说alert
函数内的mymodal
工作正常,那就忽略它。
有两种可能性。
在Firefox开发者工具/ Chrome开发者控制台中查看网络标签。确保XHR请求返回200 OK
。如果是,请检查HTTP响应并确保它是有效的JSON。
答案 1 :(得分: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">×</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">×</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'
});
}