2017-07-26 6 views
0

私のPHPファイルからJSONデータを抽出しようとしているので、私の$.postが機能しません。出力が表示されない理由はわかりません。 ここに私のコードです。

HTML:this["id"]mymodal()関数に渡されました

<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 > 

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コード:

CS50 ::クエリが私に与えられたクエリを満たすテーブルのすべての私の行、その心配を提供し、私がチェック
<?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)); ?> 

完璧なjsonファイルを提供しています。主な問題は、機能内のalertです。mymodal()が機能しています。これは、機能内に入る前タグをクリックすると意味しますが、$.post内のアラートは実行されません。

答えて

0

$.post()の引数が'json'のように、関数が正しい関数スコープに含まれていないようです。以下の更新されたコードを見てください(私は余分な文字列の連結を取り除く自由を取った - 私は間違っているかもしれませんが、それは有用性がないようです)。適切な間隔は、これらの構文エラーをキャッチするのに役立ちます。

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'は' $( '#挿入')使用してみてください –

+0

insert'# 'に追加されていないHTML(リスト);'詳細は、http://api.jquery.com/Html/を参照してください。 – Greenstick

+0

もっと見ると、 '$ .append()'はうまくいくはずです。このコードが実行されると、 '#insert'要素はDOMツリーに既に存在していますか? – Greenstick

0

JavaScriptコードが正しくありません(オンラインフォーラムのヘルプを依頼する前にコードをフォーマットしてください)。 https://jsfiddle.net/s295zzmt/

あなたのHTMLコードは、JavaScriptコード内からコピー貼り付けされた可能性が高いため、正しく表示されます。しかしalertの中にmymodalという機能が正しく動作していると言っていたので、無視してください。

2つの可能性があります。

  1. HTTPリクエストは、それが不正JSON

Firefoxの開発者ツール/クロームデベロッパーコンソールで確認するネットワーク]タブを返して

  • を失敗しています。 XHR要求が200 OKを返すことを確認します。その場合は、HTTP応答を確認し、有効なJSONであることを確認します。

  • 関連する問題