2013-07-28 2 views
0

Я не понимаю, как получить данные из файла PHP с помощью json и ajax. Помоги мне, пожалуйста.Как получить данные с PHP с помощью JSON и AJAX

Я пробовал:

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 с одним и тем же событием click? И вам нужно будет решить, хотите ли вы использовать POST или GET - не может быть одновременно. – Terry

ответ

0

Untested

Либо выберите post или get. 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 вам необходимо добавить логику, когда вы хотите POST, и когда вы хотите получить что-то вроде

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_encode вам нужно вернуться из кода и ничего не печатает после этого,
, если вы сделаете так, это будет неправильный json.
например

if(!isset($_SESSION['id'])) { 
    echo json_encode(array("error" => "error.")); 
    return 
} 
Смежные вопросы