2016-11-10 125 views
0

我有我的PHP页面这样的数组命名new1.php:如何在AJAX响应中返回数组和HTML数据?

$arr = ['value 1', 'value 2', 'value 3']; 
$html = '<div>huge data with all tags like a page</div>'; 
$response = json_encode('array' => $arr, 'html' => $html); 
echo $response 

在调用页面,当我console.log(data.html)它给undefinedconsole.log(data.array);也是如此。这里是我的AJAX代码:

$.ajax({ 
    url: "new1.php", 
    type: "POST", 
    data: { somedata: somedata }, 
    dataType: "text", 
    success: function(data) { 
     console.log(data); 
     console.log(data.html); 
     console.log(data.array); 
    } 
}); 

最重要的,我想知道的是返回与AJAX响应其他数据的网页的最佳方式?

+6

'dataType:“text”,'change to'dataType:“json”,' – guradio

+0

@JonStirling,没有语法错误 – EaB

+0

@guradio,如果我这样做,我将能够获得HTML页面或HTML内容 – EaB

回答

1

从你的PHP代码,你就json_encode它添加到页面顶部 header("Content-Type: application/json"); 那么你的编码应在数组作为参数,而不是

json_encode(array("array"=>$arr, "html"=>$html));

应该看到你的记录作为JSON现在请从服务器状态(jquery)从jQuery的智能猜测改变乌尔数据类型为json它会自动德ËJSON代替

的dataType(默认:智能猜测(XML,JSON,脚本或HTML)) 类型:String 的类型,你期望从服务器返回的数据。如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将生成XML,在1.4中JSON将生成一个JavaScript对象,在1.4脚本中将执行该脚本,而其他任何东西都将作为字符串返回)。可用类型(以及作为成功回调的第一个参数传递的结果)为:

+0

如果我这样做,我可以得到HTML页面或HTML内容? – EaB

+0

是的,与任何内容的数据。*格式,或现在'console.log('我的数据',数据),它会被记录为JSON对象,你可以看到孩子们和他们的内容 –

+0

好吧,我会尝试 – EaB

2

你应该JSON解析,因为你是从PHP文件的JSON编码,并且因为有你的Ajax的数据类型是文本,所以你需要解析JSON。

$.ajax({ 
     url:"new1.php", 
     type:"POST", 
     data:{somedata:somedata}, 
     dataType:"text", 
     success: function(data){ 
       data = JSON.parse(data); 
        console.log(data); 
       console.log(data.html); 
       console.log(data.array); 

      } 
    }); 
+2

虽然此代码片段可能会解决问题,但[包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)确实有助于提高帖子的质量。请记住,您将来会为读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性注释来挤占代码,这会降低代码和解释的可读性! –

+0

感谢罗里将记住这一点 – Jigar7521

+0

它给错误,如解析错误:语法错误,意外“= >”(T_DOUBLE_ARROW)在 – EaB