我不明白如何使用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)
未经测试的
选择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");
}
}
答案 1 :(得分:0)
如果您尝试POST或获取数据,则会同时调用两个Onclick处理程序。
您需要将这两个调用分开,并且有一个用于POST数据,另一个用于GETting数据。
同样在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']);
}
答案 2 :(得分:0)
在回显json_encode之后,您需要从代码返回并且之后不打印任何内容,如果这样做,它将是无效的json。
E.g
if(!isset($_SESSION['id'])) {
echo json_encode(array("error" => "error."));
return
}