2013-07-28 67 views
0

我不明白如何使用json和ajax從PHP文件獲取數據。請幫幫我。如何使用JSON和AJAX從PHP獲取數據

我想:

addnews.tpl:

$("#send").click(function(e){ 
    e.preventDefault(); 
    $.ajax({ 
     url: "news.php?addnews", 
     type: "POST", 
     data: { 
      title: $("#title").val(), 
      text: $("#text").val() 
     }, 
     beforeSend: function() { 
      $(".loading").css({ 
       "display": "inline" 
      }); 
     }, 
     success: function() { 

     } 
    }); 
}); 

$("#send").click(function() { 
    $.ajax({ 
     type: 'GET', 
     url: "news.php?addnews", 
     data: {}, 
     dataType: 'json', 
     success: function(data) { 
      $('.message').html(data.error); 
     }, 
     error: function(xhr){ 
      $('.message').html('error fetching data'); 
     } 
    }); 
}); 

news.php:

if(isset($_GET['addnews'])) { 
    if(!isset($_SESSION['id'])) { 
     echo json_encode(array("error" => "error.")); 
    } 
    $news->addNews($_SESSION['id'], $_POST['title'], $_POST['text']); 
    $smarty->display("template/addnews.tpl");  
} 

另一個問題:如何隱藏頁面上的JSON數組(文字)?

+0

你會得到什麼迴應? –

+0

提取數據時出錯 – Snickerson

+0

爲什麼要用相同的點擊事件調用兩個獨立的Ajax調用?而且您需要決定是否要使用POST或GET - 不能同時擁有兩者。 – Terry

回答

0

未經測試

請選擇postget。在下面的代碼中已經使用了Post

addnews.tpl:

$("#send").click(function() { 
    $.ajax({ 
     type: 'POST', 
     url: "news.php", 
     data: { 
     title: $("#title").val(), 
     text: $("#text").val(), 
     addnews: //your add news value 
     }, 
     dataType: 'json', 
     success: function(data) { 
      $('.message').html(data); 
     }, 
     error: function(xhr){ 
      $('.message').html('error fetching data'); 
     } 
    }); 
}); 

News.php

if(isset($_POST['addnews'])) { 
    if(!isset($_SESSION['id'])) { 
     echo json_encode("error"); 
    }else{ 
    $news->addNews($_SESSION['id'], $_POST['title'], $_POST['text']); 
    // $smarty->display("template/addnews.tpl"); 
    echo json_encode("success"); 
    }  
} 
+0

我愛你兄弟,非常感謝。 – Snickerson

0

如果你想POST或GET數據,無論你的onclick處理被稱爲在同一時間。 你需要分開這兩個調用,並有一個將POST數據和一個獲取數據。 此外,在news.php您需要添加邏輯,當你想要發佈,當你想在你迴音,你需要從代碼返回,之後不打印任何東西json_encode爲GET 像

if(isset($_GET['addnews'])) { 
    if(!isset($_SESSION['id'])) { 
     echo json_encode(array("error" => "error.")); 
    } 
    $smarty->display("template/addnews.tpl");  
} 


if(isset($_POST['title'])) 
{ 
    if(!isset($_SESSION['id'])) { 
     echo json_encode(array("error" => "error.")); 
    } 
$news->addNews($_SESSION['id'], $_POST['title'], $_POST['text']); 
} 
0


如果你這樣做,它將是一個無效的JSON。
例如

if(!isset($_SESSION['id'])) { 
    echo json_encode(array("error" => "error.")); 
    return 
}