如何使用PHP和Ajax将数组传递给Javascript?

抱歉如果这个解释不清楚,我也很难理解。 如何使用PHP和Ajax将数组发送到Javascript? 我正在使用Ajax来获取一系列照片,然后我想在我的页面上附加一个空的

jQuery看起来如下:

 $.ajax({ url: "", type: 'POST', data: form_data, success: function(data) { alert(data); } 

PHP函数getPhotos看起来像这样:

 <?php $photos = array(); foreach ($data as $photo) { array_push($photos,$photo['source']); } // echo json_encode($photos); How should I be returning $photos? 

如果我只是echo $photos; 数据被发送到成功回调,但它似乎不是可用的格式。

如果我在PHP中执行var_dump($photos) ,结果如下所示:

 array(4) { [0]=> string(14) "some_image.jpg" [1]=> string(14) "some_image.jpg" [2]=> string(14) "some_image.jpg" [3]=> string(14) "some_image.jpg" } 

我已经尝试了json_encode之类的各种组合,但实际上我猜测并且不确定它背后的理论。 在这种情况下,将数据从PHP传递到Javascript的最佳方法是什么?

尝试:

 $.ajax({ url: "", type: 'POST', data: form_data, dataType:"json", success: function(data) { alert(data[0]); } 

在PHP方面,你会想要打印:

 print json_encode($photos); 

您可能尝试的另一件事是为了更好地封装您的代码,并作为进一步JSON gooodness的示例,将是:

 print json_encode(array("photolist"=>$photos,"photo_owner"=>"Me!")); 

然后在服务器上,您将访问以下内容:

 data.photolist[0]; //First photo data.photo_owner; //The owner of the photo set 

我在PHP和请求结束时创建了一个数组$result

  echo json_encode($result); 

并在JS $.post处理函数中:

 var obj = $.parseJSON(data); var v = data.k; 

其中k是关联数组中的键值。

json_encode绝对是要走的路。 jQuery甚至内置了对解析JSON的支持。 你可以使用例如

 $.ajax({ url: "", type: 'POST', data: form_data, dataType: 'json', // will automatically convert array to JavaScript success: function(array) { alert(array[0]); // alerts first string } }); 

返回json本身然后通过循环遍历json在js中构造数组,如下所示:

 var array=[]; for(var key in json) { if(json.hasOwnProperty(key)) array.push(json[key]); } 

或者你可以简单地使用json本身任何需要数组的原因?

像json [0]或json [1]等。

当你需要这些东西时,json_encode rulez。

我最近也学到了很酷的东西! 这是你如何做到的:

 function jsonResponse($array) { header('Content-type: application/json; charset=utf-8;'); die(json_encode($array)); } 

这是可选的,如果你想这样做,你不需要,但在我的MVC系统中,我倾向于这样写…所以首先我做一个ajax请求(原型),一个脚本,以后调用此函数jsonResponse我之前提到过……

  new Ajax.Request('URL', { method:'post', onSuccess: function(transport){ res = transport.responseJSON; $('actionInformation').update(res.username); }, onFailure: function(){ alert('Something went wrong...') } }); 

这是jscript代码,注意res.msg,这是我们可以用数组操作的地方。 但是,一定要在PHP中以JSON格式发送响应,使用jsonResponse函数,它很容易使用,例如,你的php函数看起来像这样:

 function ajax_get_user() { $userName = 'Adrian'; $active = 1; jsonResponse(array('username' => $username, 'active' = $active)); } 

稍后你可以轻松,res.username,res.active。

我认为应该这样做!