0

Facebookの友達のIDを送信すると、phpが私の名前、FBの写真、友達の名前、友達のfbの写真を返す基本的なフォームがあります。これが私の関連コードです

HTML

<form name="input">
<input type="text" name="name" id="name"/>
<input id="submit" type="submit" class="btn btn-info" value="Submit"/>
</form>

<div class="row" id="graphArea"></div>

JAVASCRIPT

$('#submit').click(function(e){
    e.preventDefault();
    var formData = $('form').serialize();
    submitForm(formData);
});

function submitForm(formData){
$.ajax({    
    type: 'POST',
    url: 'graph.php',        
    data: formData,
    dataType: 'json',
    cache: false,
    timeout: 7000,
    success: function(data) { 
        $("#graphArea").load("graph.php");
        $(window).scrollTop($("#graphArea").offset().top);
        $("#graphArea").fadeIn(500);
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        alert("There was an error");          
    },              
    complete: function(XMLHttpRequest, status) {            

        $('form')[0].reset();
    }
});

graph.php

<?php
    require 'resources/plugin/facebook-php-sdk/src/facebook.php';
    //..some facebook authentication stuff
    $friend = $_POST['name'];
    $basicInfo = $fb->api('me?fields=friends.uid(' . $friend . ').fields(first_name,name),first_name,name');
 ?>
<hr>
<br />
<div class="span2 offset2"><h3>
<?php
    echo $basicInfo['name'] . "</h3></div><div class=\"span2\">";
    echo "<img src='https://graph.facebook.com/" . $user . "/picture?type=large'>";
    echo "</div><div class=\"span2\">";
    echo "<img src='https://graph.facebook.com/" . $friend . "/picture?type=large'></div>";
    echo "<div class=\"span2\"><h3>" . $basicInfo['friends']['data'][0]['name'];
?>
</h3>
</div>

フォームを送信するたびに、「エラーが発生しました」というエラー部分が表示されます。ただし、Google Chrome Javascript Consoleを調べて、[ネットワーク]、[プレビュー]の順にクリックすると、希望する結果が表示されます。PHPとAJAXを扱うのはこれが初めてであり、私が得ることができるすべての助けをいただければ幸いです。ありがとう!

4

2 に答える 2

2

あなたが与えたjavascriptajax呼び出しdataType: 'json',で、phpあなたが返すと、htmlこれはエラーをスローします。応答をhtmlにする場合は、データ型をに変更しhtmlます。

于 2013-01-22T04:34:53.770 に答える
1

へのajax呼び出しにはがgraph.php含まれdataType: 'json'ていgraph.phpますが、HTMLフラグメントを出力しているように見えます。さらに、AJAXサクセスハンドラーは--をもう一度呼び出します。これは、フォームを送信するためgraph.phpの呼び出しを行ったばかりなので不要です。graph.php代わりに、返されたHTMLを取得してDOMに挿入する必要があります。

$.ajax({    
    type: 'POST',
    url: 'graph.php',        
    data: formData,
    // REMOVED dataType
    cache: false,
    timeout: 7000,
    success: function(data) { 
        $("#graphArea").html(data);   // CHANGED
        $(window).scrollTop($("#graphArea").offset().top);
        $("#graphArea").fadeIn(500);
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        alert("There was an error");          
    },              
    complete: function(XMLHttpRequest, status) {            

        $('form')[0].reset();
    }
});
于 2013-01-22T04:34:22.543 に答える