jquery中的$ .post不起作用?

时间:2017-07-26 18:49:42

标签: javascript jquery html

我的$.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 :: query为我提供满足给定查询的所有表格行,不用担心,我检查了它给出了完美的json文件。主要问题是函数alert中的mymodal()正在工作,这意味着在点击预标记时它会进入函数内部,但$.post内的警报不会被执行。

2 个答案:

答案 0 :(得分:0)

您的JavaScript代码是正确的(请在在线论坛寻求帮助之前格式化代码)。 https://jsfiddle.net/s295zzmt/

您的HTML代码看起来正确,可能是因为它是从JavaScript代码中复制粘贴的。但是,既然你说alert函数内的mymodal工作正常,那就忽略它。

有两种可能性。

  1. HTTP请求失败
  2. 返回无效的JSON
  3. 在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">&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'
    });
}