使用ajax接收在php数据中序列化

时间:2012-01-04 12:16:34

标签: javascript jquery ajax deserialization

我有一个php脚本,它在php数据中返回序列化。我尝试使用jQuery 1.7中的$ .ajax()方法接收这些数据。 Here就是一个例子。

$.ajax({
    url: 'http://input.name/get.php?do=lookup' + '&domain=twittorama&tlds=.ru,.com,.net,.comf.ru',
    type: 'GET',
    dataType: 'text',
    cache: 'false',
    complete: function(res) {
        alert('COMPLETE() done');
        console.log(res);
    }
});

在控制台中我只看到

Object { readyState=0, status=0, statusText="error"}

那么,我做错了什么?你能帮帮我吗?

UPD

有趣的提示:如果我使用JSONP dataType请求可以接收数据,但无法处理它。 Here is an example

$.ajax({
    url: 'http://input.name/get.php?do=lookup',
    data: 'domain=twittorama&tlds=.ru,.com,.net,.comf.ru',
    dataType: 'jsonp',
    cache: false,
    success: function(data) {
        alert("Data: "+data);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        alert("Error: "+textStatus);
        console.log(jqXHR);
    }
});

3 个答案:

答案 0 :(得分:2)

而不是complete:使用success:,而res将是您的ajax请求中返回的数据。

请记住使用error:,因为您调用时出现错误,因为您的控制台输出中似乎可能存在错误。

代码:

$.ajax({
    url: 'http://input.name/get.php?do=lookup',
    data: 'domain=twittorama&tlds=.ru,.com,.net,.comf.ru',
    cache: false,
    success: function(data) {
        alert("Data: "+data);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        alert("Error: "+textStatus);
        console.log(jqXHR);
    }
});

答案 1 :(得分:2)

您的代码可能没问题,但您试图违反same origin policy。基本上,如果您的网站是http://aaa.com/,则无法将AJAX调用http://bbb.com/

有几种解决方法:

但是大多数人都要求双方都玩得很好。

答案 2 :(得分:1)

响应是完整函数的第二个参数:

$.ajax({
    url: 'http://input.name/get.php?do=lookup' + '&domain=twittorama&tlds=.ru,.com,.net,.comf.ru',
    type: 'GET',
    dataType: 'text',
    cache: 'false',
    complete: function(res,response) {
        alert('COMPLETE() done');
        console.log(response);
    }
});

更多信息:http://api.jquery.com/jQuery.ajax/

您还应该考虑使用JSON,而不是php序列化数据