Javascript 从AJAX请求中删除JSON数据

Javascript 从AJAX请求中删除JSON数据,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我有一个PHP函数,可以回显JSON数据和分页链接。数据与此一模一样 [{"name":"John Doe","favourite":"cupcakes"},{"name":"Jane Citizen","favourite":"Baked beans"}] Previous Next 为了获得这些数据,我将使用jQuery.ajax函数。我的代码如下:- function loadData(page){ $.ajax ({ ty

我有一个PHP函数,可以回显JSON数据和分页链接。数据与此一模一样

[{"name":"John Doe","favourite":"cupcakes"},{"name":"Jane Citizen","favourite":"Baked beans"}]
Previous
Next
为了获得这些数据,我将使用jQuery.ajax函数。我的代码如下:-

function loadData(page){                
    $.ajax
    ({
        type: "POST",
        url: "http://sandbox.dev/favourite/test",
        data: "page="+page,
        success: function(msg)
        {
            $("#area").ajaxComplete(function(event, request, settings)
            {
                $("#area").html(msg);
            });
        }
    });
}
使用jQuery,我是否可以刮取从AJAX请求返回的数据并使用JSON数据?还是有更好的方法?我只是在试验,希望对JSON数据进行分页。

您可以尝试以下方法:-

var jsObject = JSON.parse(your_data);

data = JSON.parse(gvalues);
var result = data.key;
var result1 = data.values[0];
您可以尝试以下方法:-

var jsObject = JSON.parse(your_data);

data = JSON.parse(gvalues);
var result = data.key;
var result1 = data.values[0];
将数据类型放入ajax请求以接收json对象,否则将接收字符串

如果您在json中添加了上一个和下一个..,那么这将是无效的

function loadData(page){                
    $.ajax({
        type: "POST",
        url: "http://sandbox.dev/favourite/test",
        data: {'page':page},
        dataType:'json',
        success: function(msg){ 
            if(typeof (msg) == 'object'){
              // do something... 
            }else{
              alert('invalid json');
            }
        },
        complete:function(){ 
           //do something
        }
    });
}
和。。在php文件中,放置一个标题

header("Content-type:application/json");
// print your json..
要查看json对象。。。使用console.log,如下所示:

// your ajax....
success:(msg){
if( window.console ) console.dir( typeof(msg), msg);
}
将json更改为如下内容:使用jsonlint对其进行验证-

将数据类型放入ajax请求以接收json对象,否则将接收字符串

如果您在json中添加了上一个和下一个..,那么这将是无效的

function loadData(page){                
    $.ajax({
        type: "POST",
        url: "http://sandbox.dev/favourite/test",
        data: {'page':page},
        dataType:'json',
        success: function(msg){ 
            if(typeof (msg) == 'object'){
              // do something... 
            }else{
              alert('invalid json');
            }
        },
        complete:function(){ 
           //do something
        }
    });
}
和。。在php文件中,放置一个标题

header("Content-type:application/json");
// print your json..
要查看json对象。。。使用console.log,如下所示:

// your ajax....
success:(msg){
if( window.console ) console.dir( typeof(msg), msg);
}
将json更改为如下内容:使用jsonlint对其进行验证-


最好不要发明自己的格式,比如在JSON之后添加HTML链接。JSON已经能够容纳您需要的任何结构。例如,您可以使用以下表格:

{
    "data": [
        {"name": "John Doe", "favourite": "cupcakes"},
        {"name": "Jane Citizen", "favourite": "Baked beans"}
    ],
    "pagination": {
        "prev": "previous page URL",
        "next": "next page URL"
    }
}
在客户端,可以非常轻松地解析它:

$.ajax({
    url: "URL",
    dataType:'json',
    success: function(resp) { 
        // use resp.data and resp.pagination here
    }
});

最好不要发明自己的格式,比如在JSON之后添加HTML链接。JSON已经能够容纳您需要的任何结构。例如,您可以使用以下表格:

{
    "data": [
        {"name": "John Doe", "favourite": "cupcakes"},
        {"name": "Jane Citizen", "favourite": "Baked beans"}
    ],
    "pagination": {
        "prev": "previous page URL",
        "next": "next page URL"
    }
}
在客户端,可以非常轻松地解析它:

$.ajax({
    url: "URL",
    dataType:'json',
    success: function(resp) { 
        // use resp.data and resp.pagination here
    }
});

我建议您返回纯JSON数据,而不是删除JSON数据。根据您的用例,我认为没有必要编写上一个和下一个。我猜返回url中的第一个对象是Previous,下一个对象是next。只需返回下面的字符串

[{"name":"John Doe","favourite":"cupcakes"},{"name":"Jane Citizen","favourite":"Baked beans"}]
并在下面读它

function loadData(page){                
    $.ajax
    ({
        type: "POST",
        url: "http://sandbox.dev/favourite/test",
        dataType:'json',
        success: function(msg)
        {
            var previous = msg[0];  //This will give u your previous object and
            var next = msg[1]; //this will give you your next object

            //You can use prev and next here.

            //$("#area").ajaxComplete(function(event, request, settings)
            //{
            //    $("#area").html(msg);
            //});
        }
    });
}

这种方法只返回那些不会改变整个html的数据。

我建议您返回纯JSON数据,而不是删除JSON数据。根据您的用例,我认为没有必要编写上一个和下一个。我猜返回url中的第一个对象是上一个对象,下一个对象是下一个对象。只需返回下面的字符串

[{"name":"John Doe","favourite":"cupcakes"},{"name":"Jane Citizen","favourite":"Baked beans"}]
并在下面读它

function loadData(page){                
    $.ajax
    ({
        type: "POST",
        url: "http://sandbox.dev/favourite/test",
        dataType:'json',
        success: function(msg)
        {
            var previous = msg[0];  //This will give u your previous object and
            var next = msg[1]; //this will give you your next object

            //You can use prev and next here.

            //$("#area").ajaxComplete(function(event, request, settings)
            //{
            //    $("#area").html(msg);
            //});
        }
    });
}

这样只返回将要更改的数据,而不是整个html。

为什么在成功处理程序中使用ajaxComplete?删除它,并直接填充区域。您不需要ajaxComplete函数-因为您已经在成功回调函数中,您可以只放置普通的$area.htmlmsg;在那里,您可以使用.split或.substr和.indexOf或regex方法来获取第一个回车符之前的所有内容,然后将其解析为JSON,但是为什么PHP返回所示格式?为什么在成功处理程序中使用ajaxComplete?删除它,并直接填充区域。您不需要ajaxComplete函数-因为您已经在成功回调函数中,您可以只放置普通的$area.htmlmsg;在那里,您可以使用.split或.substr和.indexOf或regex方法来获取第一个回车符之前的所有内容,然后将其解析为JSON,但是为什么您的PHP返回所示的格式呢?yeap@Christoph!这就是为什么我在json中添加了“上一个”和“下一个”,这将是无效的。。当返回时,您可以检查json。。。iftypeof msg=='object'{}else{alert'invalid json';}.yeap@Christoph!这就是为什么我在json中添加了“上一个”和“下一个”,这将是无效的。。当返回时,您可以检查json。。。iftypeof msg=='object'{}else{alert'invalid json';}。这更干净了!我重写了PHP,将分页值作为JSON响应的一部分。我希望我可以投票,但我没有足够的代表。谢谢你的指针。别忘了在有空的时候拿着投票回来;这更干净!我重写了PHP,将分页值作为JSON响应的一部分。我希望我可以投票,但我没有足够的代表。谢谢你的指针。别忘了在有空的时候拿着投票回来;