2013-10-24 2 views
0

Я пытаюсь загрузить содержимое из PHP страницы, когда пользователь нажимает на ссылку:загрузки содержимого PHP страницу без обновления страницы

Пользователь может щелкнуть по ссылке, чтобы получить данные AJAX в файле: message.php

настоящее время у меня этот код в message.php

  $('#pmid<?php echo $convoData['id']; ?>').click(function(){ 
        $.ajax({ 
        type:"GET", //this is the default 
        url: "/index.php?i=pm&p=rr", 
        data: {id:"<?php echo $convoData['id']; ?>"} 
        }) 
        .done(function(stuff) { 
        $("#name").html(stuff); 
        $("#post").html(otherstuff); 
        $("") 
        }); 
       }); 

И в HTML:

Chat with <span id="name"></span> //The $name should be added to here 
    <ul id="post"></ul> //The $post should be added to here 

страница, где AJAX получает данные из называется: get.php, это выглядит следующим образом:

$id = $_GET['id']; 
    $get=mysql_query("SELECT * FROM private_messages WHERE id='$id'"); 
    $getData=mysql_fetch_assoc($get); 


    //Set the variables that needs to be send back to the other page. 
    $getUser=$user->getUserData($getData['sender_id']); 


    $name=$getUser['username']; 
    $post = ' 
    <li> 
     <img width="30" height="30" src="images/avatar-male.jpg"> 
     <div class="bubble"> 
     <a class="user-name" href="">'.$name.'</a> 
     <p class="message"> 
      '.$getData['subject'].' 
     </p> 
     <p class="time"> 

     </p> 
     </div> 
    </li> 
    '; 
echo $name; 
echo $post; 

Таким образом, проблема заключается в том, что в настоящее время все данные просто печатаются в #name

Как я могу это сделать $name будет напечатан в #name и $post в #post?

+0

Retun выход как JSON закодированного массив с двумя ключами, а в ответе показаны значения на основе ключей –

+0

вы пытались получить json закодированный массив с php-страницы, а затем разделили данные с помощью jquery и выделили нужный контейнер. –

+0

Как это сделать? Может ли один из вас привести пример? – oliverbj

ответ

0

Возврат выход как JSon закодированного массива с двумя ключами и на ответ показывает значения на основе таких клавиш

На вашем php

$arrRet = array(); 
$arrRet['name'] = $name; 
$arrRet['post'] = $post; 
echo json_encode($arrRet); 
die(); 

В Аяксе

$.ajax({ 
    type:"GET", 
    url: "/index.php?i=pm&p=rr", 
    dataType:'json', 
    data: {id:"<?php echo $convoData['id']; ?>"}, 
    success : function(res){ 
     if(res){ 
     $("#name").html(res.name); 
     $("#post").html(res.post); 
     } 
    } 
}); 
+0

Я получаю непредвиденную ошибку идентификатора. – oliverbj

+0

О, извините, я пропустил некоторые запятые. Простите, я обновил ответ. –

+0

Всякий раз, когда я нажимаю, ничего не происходит. – oliverbj

0

Я хотел бы использовать JSON, чтобы передать две переменные:

JS:

$('#pmid<?php echo $convoData['id']; ?>').click(function(){ 
        $.ajax({ 
        type:"GET", //this is the default 
        url: "/index.php?i=pm&p=rr", 
        data: {id:"<?php echo $convoData['id']; ?>",}, 
        dataType: 'json' 
        }) 
        .done(function(stuff) { 
        $("#name").html(stuff[0]); 
        $("#post").html(stuff[1]); 
        $("") 
        }); 
       }); 

PHP:

echo json_encode(array($name,$post)); 
0

попытка вернуть его так:

$output = array(); 
$output['name'] = $name; 
$output['post'] = $post; 
$output = json_encode($output); 
echo json_encode($output); exit; 

Тогда с возвращением в Js попробовать:

function(data){ 
    $("#name").html(data.name); 
    $("#post").html(data.post); 
} 
Смежные вопросы