php遍历出json不同的数据,jQuery json遍历数据-只是无法弄清楚 - php

博主在尝试使用jQuery AJAX从PHP页面获取JSON数据时遇到困难,数据能够到达但无法正确引用。问题在于AJAX请求的`dataType`属性拼写错误以及在访问JSON对象时的错误。解决方案包括修正`dataType`为`dataType`,并正确引用`data.location`数组来访问数据。此外,建议优化代码以提高效率,如缓存DOM元素引用和一次性构建字符串后再进行追加。
摘要由CSDN通过智能技术生成

我在pge上有一个按钮,该按钮可从php页面获取json数据,

数据似乎可以到达,但是我已经浏览了数百个示例,但我似乎无法引用返回的数据,这是我的脚本:

先前评论的编辑文字

$('#geo_batch').click(function (){

var ajax_load = "saving location... Loading data...";

$("#batch_detail").html(ajax_load);

$('#batch_buttons').hide();

var form = $("form"); //Grab the form element from the DOM

//alert(form.serialize());

var mydata = form.serialize();

$.ajax({

type: "POST",

url: 'geo_getupdate_list.php',

data: mydata,

datatype: 'json',

success: function(dat) {

alert('dat:'+ typeof dat ) //RETURNS STRING

//alert(dat.location[0].id_mdt); //RETURNS UNDEFINED

// Cache the batch_detail element

var $detail = $("#batch_detail").html('Locations have been retrieved:
' + dat + '');

$('#batch_buttons').show();

// Instead of several .append() calls on the same element, create a

// single string, and do one.

var appendString = '';

for(var key in dat) { alert(key); return false; };

/*for(i=0; i < count; i++){

appendString += 'display address: ' + data.location[i].displayaddr_mdt + 'flag: ' + data.location[i].flag_mdt;

}*/

$detail.append(appendString);

},

error: function(dat) { //Triggered if an error communicating with server

//alert('fail');

$("#batch_detail").html('There was an error: '+dat+'');

$('#batch_buttons').show();

}

});

return false; //Ignore the default behavior of the button click

});

返回的json是:

{"location":[{"id_mdt":"5","idetp_mdt":"1","name_mdt":null,"geoaddr_mdt":null,"displayaddr_mdt":"31a Arundel Gardens London W11 2LW","telephone_mdt":null,"email_mdt":null,"website_mdt":"http:\/\/","lat_mdt":"51.513561","lng_mdt":"-0.206519","active_mdt":"1","flag_mdt":"1","id_etp":"1","name_etp":"Stockist","icon_etp":null},{"id_mdt":"1","idetp_mdt":"1","name_mdt":null,"geoaddr_mdt":null,"displayaddr_mdt":"via todde 29 Ales Sardegna 09091","telephone_mdt":null,"email_mdt":null,"website_mdt":"http:\/\/","lat_mdt":"39.7670964","lng_mdt":"8.813689","active_mdt":"1","flag_mdt":"1","id_etp":"1","name_etp":"Stockist","icon_etp":null},{"id_mdt":"4","idetp_mdt":"1","name_mdt":null,"geoaddr_mdt":null,"displayaddr_mdt":"31a Arundel Gardens London W11 2LW","telephone_mdt":null,"email_mdt":null,"website_mdt":"http:\/\/","lat_mdt":"51.513561","lng_mdt":"-0.206519","active_mdt":"1","flag_mdt":"1","id_etp":"1","name_etp":"Stockist","icon_etp":null},{"id_mdt":"3","idetp_mdt":"1","name_mdt":null,"geoaddr_mdt":null,"displayaddr_mdt":"31a Arundel Gardens London W11 2LW","telephone_mdt":null,"email_mdt":null,"website_mdt":"http:\/\/","lat_mdt":"51.513561","lng_mdt":"-0.206519","active_mdt":"1","flag_mdt":"1","id_etp":"1","name_etp":"Stockist","icon_etp":null},{"id_mdt":"6","idetp_mdt":"1","name_mdt":null,"geoaddr_mdt":null,"displayaddr_mdt":"31a Arundel Gardens London W11 2LW","telephone_mdt":null,"email_mdt":null,"website_mdt":null,"lat_mdt":"51.513561","lng_mdt":"-0.206519","active_mdt":"1","flag_mdt":"1","id_etp":"1","name_etp":"Stockist","icon_etp":null},{"id_mdt":"7","idetp_mdt":"1","name_mdt":"Test","geoaddr_mdt":null,"displayaddr_mdt":"31a Arundel Gardens London W11 2LW","telephone_mdt":null,"email_mdt":null,"website_mdt":null,"lat_mdt":"51.513561","lng_mdt":"-0.206519","active_mdt":"1","flag_mdt":"1","id_etp":"1","name_etp":"Stockist","icon_etp":null}]}

我如何访问数组中的数据?

我在这里和其他地方尝试了很多示例,但我无法工作。

我认为这可能与返回的json对象有关[它认为其中的符号是错误的?

我必须生成json的php如下:

//have defined a recordset called $rs_locations

$rows = array();

while($r = mysql_fetch_assoc($rs_locations)) {

$rows[] = $r;

}

$jsondata = json_encode($rows);

// trying to strip out the [ ] brackets but doesn't work

str_replace ("[", "", $jsondata);

str_replace ("]", "", $jsondata);

echo($jsondata);

任何想法,任何人,我都很困惑,谢谢

参考方案

编辑:您的dataType属性拼写错误。

它应该是dataType,而不是datatype。

另外,尝试将data参数更改为其他名称,例如dat。在您的$.ajax()呼叫设置了data属性之前,我已经看到过与此有关的问题。

success: function( dat ) {

// Then change all references from data to dat

在您的success:回调中尝试此操作。

您多次获取相同的#batch_detail元素,并对该元素连续调用.append()。

这样,您可以缓存对元素的引用,创建要附加的单个String,然后在循环完成后执行一次附加。

您遇到的具体麻烦是您需要直接引用存储在data.location处的数组。

success: function(dat) {

// Cache the batch_detail element

var $detail = $("#batch_detail").html('Locations have been retrieved:
' + dat + '');

$('#batch_buttons').show();

var count = dat.location.length - 1;

// Instead of several .append() calls on the same element, create a

// single string, and do one.

var appendString = '';

for(i=0; i < count; i++){

appendString += 'display address: ' + dat.location[i].displayaddr_mdt + 'flag: ' + dat.location[i].flag_mdt;

}

$detail.append( appendString );

},

jQuery Ajax加载仅适用于单个单词变量 - php

在我的PHP文件中,我将一些变量从输入框传递到链接中,该链接通过jQuery的ajax load函数在其URL中使用该变量加载页面。整个系统运行良好,但仅适用于单字变量。每当涉及到空格时,我的Ajax通话都会中断。我假设这是一个编码问题,但是我也有一些疑问。基本上,它归结为我的PHP文件中的这一行代码,这导致了混乱。是否有可能找出格式是否正确,或者为什么在多…jQuery-找不到Ajax网址 - php

好的,我敢肯定这确实很容易,而且我很愚蠢,但是似乎并不能深入了解它。我试图从我的js文件“ custom.js”中对“ helpers.php”中的某些代码进行简单的AJAX调用。但是,我仍然收到404错误,因为我似乎并没有正确遍历文件夹,尽管我确信我正在...我的文件夹结构如下:html index.php js/ custom.js includes h…jQuery ajax无法正常工作 - php

我制作了一个测试jQuery ajax脚本,并在提交时将其附加到表单上,但是尽管我在函数末尾添加了return false,但页面在提交时仍保持刷新状态,并且也没有得到任何响应。表单如下所示:

JavaScript文件:$.ajax({ type: "POST", url: "ajax.php", data: dataString, success: function(r) { $("#div").html(r); } }); 我想在成功的情况下将页面重定向到new.php,所以在我使用a…jQuery ajax()返回json对象,但未正确警告 - php

为什么无法使用data [0] .id返回ID? $(document).ready(function(){ $.ajax({ type: 'POST', dataType: "json", url: '<?php echo matry::base_to('tests/map_it'…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值