0

我不明白如何使用 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');
        }
    }); 
}); 

新闻.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数组(文本)?

4

3 回答 3

0

回显 json_encode 后,您需要从代码中返回,之后不打印任何内容,
如果这样做,它将是无效的 json。
例如

if(!isset($_SESSION['id'])) {
    echo json_encode(array("error" => "error."));
    return
}
于 2013-07-28T08:12:58.727 回答
0

如果您尝试 POST 或 GET 数据,则会同时调用您的两个 Onclick 处理程序。您需要将这两个调用分开,一个用于 POST 数据,一个用于 GETting 数据。此外,news.php您还需要为何时要发布以及何时要获取类似的内容添加逻辑

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']);  
}
于 2013-07-28T06:56:32.380 回答
0

未经测试

选择postgetPost已在以下代码中使用。

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');
        }
    }); 
}); 

新闻.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");
    }      
}
于 2013-07-28T06:55:57.477 回答