PHP获取了AJAX传过来的参数后,如何返回值给前端?

testerAPP 2017-09-15 04:33:59
我当前用以下代码获取用户当前位置,并使用AJAX传值给PHP,但页面一直不停刷新,不知道问题出在哪里,因为不会AJAX,所以也不知道该如何处理,还望路过的高手帮忙解决一下,非常感谢!~


var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
var url = 'list.php?id=$id; //这个是商家列表数据处理页面$id当前页面分类ID
var data = {
lng: r.point.lng,
lat: r.point.lat
}

//r.point.lng和r.point.lat是获取的经纬度,用于传于PHP通过MYSQL查询语句里和商家所设置的经纬度进行计算获取距离所使用的。

$.post(url,data, function(data){
console.log(data);
$('body').html(data);//因为我从console里看是当前页的html且能接收到传给PHP的数据,就使用此方法,结果页面就一直不停刷新...不知道哪里出了问题...
});
}
else {
alert('failed'+this.getStatus());
}
},{enableHighAccuracy: true});


PHP代码如下


$lng = $_POST['lng'];
$lat = $_POST['lat'];


请问,如何解决页面一直刷新的问题呢?因为我不会AJAX,还望能够提供下解决的方法,非常感谢!~
...全文
1159 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2017-09-18
  • 打赏
  • 举报
回复
返回经纬度的代码在哪里?echo输出经纬度就die就行了,结束其他带代码执行了输出 php我也不懂
testerAPP 2017-09-18
  • 打赏
  • 举报
回复
引用 9 楼 xuzuning 的回复:
xajax 和 smart 可无缝对接,不过这两个玩意都太古老了
引用 3 楼 showbo 的回复:
ajax请求的url也是当前页面?如果是同一个页面处理ajax操作的要die结束其他代码的执行和后续的html输出,要不肯定返回整个页面内容了
我还是没有解决,T-T。不知道如何进行了,还望能够理解和帮助。我发的那个PHP里的MYSQL查询语句需要获取当前用户的经纬度也就是我一开始发的那个JS,如果没有就会错误打印在前端显示。如果我执行$('body').html(data),虽然会把错误刷新掉(因为有经纬度了),但还是可以看得见,太影响使用,而且页面还会自动不停的加载刷新(我估计因为AJAX返回了整个页面的HTML,到了AJAX那又执行了一次,一直这样重复)。但我又不知道如何解决,完全迷茫了。。。还望能够给予帮助!~谢谢啦!~
xuzuning 2017-09-16
  • 打赏
  • 举报
回复
xajax 和 smart 可无缝对接,不过这两个玩意都太古老了
testerAPP 2017-09-16
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
都是 return 么看到 echo 你是用的什么框架吧?设置工作模式为 ajax
对,用的是smart框架,我没怎么改这个文件,只是因为需要计算距离,我才加了$log = $_POST['lng'],$latA,MYSQL里的距离计算公式,和循环里的判断km和m,其它没了。不知道如何设置工作模式为AJAX,完全不会AJAX,经过这个之后,一定好好学学AJAX。不会又想解决的这种心情太要命了。
xuzuning 2017-09-16
  • 打赏
  • 举报
回复
都是 return 么看到 echo 你是用的什么框架吧?设置工作模式为 ajax
testerAPP 2017-09-16
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
贴出你的 php 代码
下面是查询语句

<?php
define('MOB_PAGE',true);
require(dirname(__FILE__)."/global.php");
choose_domain();			//域名判断

//导航条
@include(Mpath."data/wapguide_fid.php");

$fidDB=$db->get_one("SELECT A.* FROM {$_pre}sort A WHERE A.fid='$fid'");
if(!$fidDB){
	showerr("栏目不存在");
}elseif($fidDB[jumpurl]){
	header("location:$fidDB[jumpurl]");
	exit;
}

/**
*模型配置文件
**/
$field_db = $module_DB[$fidDB[mid]][field];

//字段筛选
unset($TempSearch_2,$TempSearch_array,$seo_tile);
foreach($field_db AS $key=>$value){
	if($value[listfilter]){
		if($$key){	//SEO,title
			$detail=explode("\r\n",$value[form_set]);
			foreach($detail AS $_value){
				$detail2=explode("|",$_value);
				$detail2[1] || $detail2[1]=$detail2[0];
				if($detail2[0]==$$key){
					$seo_tile.=" {$value[title]} {$detail2[1]} ";
					break;
				}
			}
		}
		$TempSearch_2.="$key=>'{$$key}',";		//分页链接使用
		$TempSearch_array[$key]=$$key;			//其它链接使用
		$search_fieldDB[$key][$$key!=''?$$key:0]=" selected class='ck' style='color:red;'";
	}
}

/**
*栏目配置参数及栏目用户自定义的变量
*对栏目用户自定义的变量附件路径做处理
*以下用的比较少,可以删除忽略
**/
$fidDB[config]=unserialize($fidDB[config]);
$CV=$fidDB[config][field_value];
$_array=array_flip($fidDB[config][is_html]);
foreach( $fidDB[config][field_db] AS $key=>$rs){
	if(in_array($key,$_array)){
		$CV[$key]=En_TruePath($CV[$key],0);
	}elseif($rs[form_type]=='upfile'){
		$CV[$key]=tempdir($CV[$key]);
	}
}


//SEO
$titleDB[title]	= $fidDB[metatitle]?seo_eval($fidDB[metatitle]):strip_tags("{$city_DB[name][$city_id]} {$zone_DB[name][$zone_id]} {$street_DB[name][$street_id]} $fidDB[name] $seo_tile");
$titleDB[keywords] = seo_eval($fidDB[metakeywords]);
$titleDB[description] = seo_eval($fidDB[metadescription]);

 
//大分类与小栏目的判断
if($fidDB[type]){
	$sortDB=ListOnlySort();
}else{
	$_erp=$Fid_db[tableid][$fid];
	if($fidDB[maxperpage]){
		$rows=$fidDB[maxperpage];
	}elseif($webdb[Info_ListNum]){
		$rows=$webdb[Info_ListNum];
	}else{
		$rows=5;
	}
	$listdb=ListThisSort($rows,70);

	if($totalNum){
		$showpage=getpage("","","waplist.php?",$rows,$totalNum);
		$showpage=preg_replace("/waplist\.php\?&page=([0-9]+)/eis","get_info_url('',$fid,$city_id,$zone_id,$street_id,array($TempSearch_2'page'=>'\\1'))",$showpage);
	}
}


//列表页个性头部与尾部
get_list_tpl($head_tpl,$foot_tpl,$main_tpl);

//获取标签内容
$template_file=$fidDB[type]?getTpl("wapbigsort",$main_tpl):getTpl("waplist_$fidDB[mid]",$main_tpl);
fetch_label_value(array('pagetype'=>'2','file'=>$template_file,'module'=>$webdb['module_id']));

//require(Mpath."inc/waphead.php");
require($template_file);
//require(Mpath."inc/wapfoot.php");

 

function nearby_utf8($str) {
	if('utf-8' != CHARSET) {
		return iconv('utf-8', 'gbk',$str);
	}
	return $str;
}
 
/**
*针对栏目获取内容信息列表
**/
function ListThisSort($rows,$leng){
	global $db,$_pre,$page,$fid,$fidDB,$SQL,$city_id,$zone_id,$street_id,$field_db,$timestamp,$webdb,$timestamp,$Murl,$Fid_db,$_erp,$totalNum,$otherSelect,$Module_db;
	$SQL='';
	if($street_id>0){
		$SQL =" AND A.street_id='$street_id' ";
	}elseif($zone_id>0){
		$SQL =" AND A.zone_id='$zone_id' ";
	}else{
		$SQL = build_module_sql();
	}	
	//用户自定义筛选字段,过滤数据
	foreach($field_db AS $key=>$value){
		if($value[listfilter]){
			if($_GET[$key]!=''){
				$otherSelect++;
				if($value[form_type]=='checkbox'){
					$SQL .=" AND BINARY B.`$key` LIKE '%/#/$_GET[$key]/#/%' ";
				}else{
					$SQL .=" AND BINARY B.`$key`='$_GET[$key]' ";
				}				
			}
		}
	}

	if(!$webdb[Info_ShowNoYz]){
		$SQL .=" AND A.yz='1' ";
	}
	if($page<1){
		$page=1;
	}
	if($fidDB[listorder]==1){
		$sql_list="A.posttime";
		$sql_order="DESC";
	}elseif($fidDB[listorder]==2){
		$sql_list="A.posttime";
		$sql_order="ASC";
	}elseif($fidDB[listorder]==3){
		$sql_list="A.hits";
		$sql_order="DESC";
	}elseif($fidDB[listorder]==4){
		$sql_list="A.hits";
		$sql_order="ASC";
	}elseif($fidDB[listorder]==5){
		$sql_list="A.lastview";
		$sql_order="DESC";
	}elseif($_GET[dis]==6){
		$sql_list="if(distance = '商家还未上传位置哟',1,0), distance+0";
		$sql_order="ASC";
	}else{
		$sql_list="A.list";
		$sql_order="DESC";
	}

	$lonA = $_POST['lng'];
	$latA = $_POST['lat'];
	//$arr = array ('success'=>'0');
	$i=0;
	require(ROOT_PATH."inc/gps.inc.php");
	$dw  = new GPS();
	//print_r($listdb[$rs[dis]]);
$mysql2="select SQL_CALC_FOUND_ROWS r.* from(";
$mysql1='select * from (
     select e.groupid,d.qy_contact_tel,d.host,d.myhost,B.*,d.title title1,d.gg_maps,substring_index(gg_maps, ",", 1) AS lng,substring_index(gg_maps, "," ,- 1) AS lat,a.title,a.mid ,
	    a.fname ,a.info ,a.hits,a.comments ,a.posttime,a.list ,a.username ,a.titlecolor,a.fonttype ,
		a.picurl ,a.ispic,a.yz ,a.yzer ,a.yztime ,a.levels ,a.levelstime,a.keywords,a.jumpurl,a.iframeurl 
		,a.style,a.head_tpl ,a.main_tpl ,a.foot_tpl,a.target ,a.ishtml,a.ip,a.lastfid,a.money,
		a.passwd,a.editer,a.edittime,a.begintime ,a.endtime,a.config ,a.lastview ,a.city_id ,
		a.zone_id,a.street_id ,a.editpwd ,a.showday ,a.visit_log ,a.visit_num,a.telephone,a.mobphone ,
		a.email,a.oicq ,a.msn ,a.linkman,a.postcode,a.address ,a.weburl ,a.fax,a.maps,a.picnum ,a.replytime ,a.yhqID,
		case when gg_maps then ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN(('.$latA.' * PI() / 180 - substring_index(gg_maps, ",", -1) * PI() / 180) / 2),2) + COS('.$latA.' * PI() / 180) * COS(substring_index(gg_maps, ",", -1) * PI() / 180) * POW(SIN(('.$lonA.' * PI() / 180 - substring_index(gg_maps, "," ,1) * PI() / 180) / 2),2))) * 1000) else "商家还未上传位置哟" end distance
	 FROM qb_fenlei_content A  LEFT JOIN ';
	 $mysql4='  B ON A.id=B.id 
     LEFT JOIN QB_HY_COMPANY d ON a.uid=d.uid
     LEFT JOIN qb_memberdata e on a.uid=e.uid
     LEFT JOIN qb_group f on e.groupid=f.gid';
	$min=($page-1)*$rows;
	$query=$db->query("$mysql2$mysql1{$_pre}content_{$fidDB[mid]}$mysql4 WHERE a.list>a.posttime and A.fid=$fid $SQL ORDER BY $sql_list $sql_order ) o
union
$mysql1{$_pre}content_{$fidDB[mid]}$mysql4 WHERE  a.list=a.posttime  and A.fid=$fid $SQL ORDER BY $sql_list $sql_order ) p
union
$mysql1{$_pre}content_{$fidDB[mid]}$mysql4 WHERE a.list=a.posttime  and A.fid=$fid $SQL ORDER BY $sql_list $sql_order ) q
union
$mysql1{$_pre}content_{$fidDB[mid]}$mysql4 WHERE  a.list=a.posttime and a.uid=0  and A.fid=$fid $SQL ORDER BY $sql_list $sql_order ) s)r LIMIT $min,$rows"); // LIMIT $min,$rows

	$RS=$db->get_one("SELECT FOUND_ROWS()");
	$totalNum=$RS['FOUND_ROWS()'];
	while( $rs=$db->fetch_array($query) ){
		if(del_EndTimeInfo($rs)){	//自动删除过期信息
			continue;
		}
		$rs[content]=@preg_replace('/<([^>]*)>/is',"",$rs[content]);	//把HTML代码过滤掉
		$rs[content]=get_word($rs[full_content]=$rs[content],100);
		$rs[my_content1]=get_word($rs[full_content]=$rs[content],100);//20151006
		$rs[title1]=get_word($rs[full_title1]=$rs[title1],33);
		$rs[title]=get_word($rs[full_title]=$rs[title]);
		if($rs['list']>$timestamp){
			$rs[title]="<span>$rs[title]</span><img src='$webdb[www_url]/f/images/pc/ding.jpg' style='margin-left:3px;' border=0>";
		}elseif($rs['list']>$rs[posttime]){
			//置顶过期的信息,需要恢复原来发布日期以方便排序,放在后面
			$db->query("UPDATE {$_pre}content$_erp SET list='$rs[posttime]' WHERE id='$rs[id]'");
		}
		if($rs[mysort1]==100){   
			$rs[title]="<span>$rs[title]</span><img src='$webdb[www_url]/f/images/pc/jing.jpg'  style='margin-left:3px;' border=0>";
		}elseif($rs[mysort1]==50){
		    $rs[title]="<span>$rs[title]</span><img src='$webdb[www_url]/f/images/pc/ding.jpg'  border=0>";
		}
		if ($rs[my_zkl]>5){
			$rs[my_zkl]=$rs[my_zkl]."折"."<img src='$webdb[www_url]/images/default/icotop.gif' border=0>";
		}
		if(!$rs[yhqID]== null){
		$rs[title]="<span>$rs[title]</span><img src='$webdb[www_url]/f/images/pc/quan.jpg' style='margin-left:3px;' border=0>";
		}
		$times=$timestamp-$rs[posttime];
		if(!$webdb[Info_list_cache]&&$times<3600){
			$rs[times]=ceil($times/60).'分钟前';
		}elseif(!$webdb[Info_list_cache]&&$times<3600*24){
			$rs[times]=ceil($times/3600).'小时前';
		}else{
			$rs[times]=date("Y-m-d",$rs[posttime]);
		}
	    if($rs[mysort1]<101||$rs['list']>$timestamp){
			$rs[times]='今天';
		}
		$rs[times]='今天';//因为采集问题,全部设置为今天发帖
		
		
		$rs[posttime]=date("Y-m-d",$rs[full_time]=$rs[posttime]);
		if($rs[picurl]){
			$rs[picurl]=tempdir($rs[picurl]);
		}
	
		$Module_db->showfield($field_db,$rs,'list');
	
		$rs[url]="$city_url/f/bencandy.php?fid=$rs[fid]&id=$rs[id]&city_id=$rs[city_id]";
		
		//处理店铺url  20151001
		$rs[host]=$rs[host]?$rs[host]:"http://www.dazhedidai.com/home/?uid=".$rs[uid];
		
		if($rs[distance] != '商家还未上传位置哟'){
			if($rs[distance] > 1000){
				$dis = $rs[distance] /1000;
				$rs[distance] = '<span>距您</span><i>'.round($dis, 2) .'km</i>';
			}else{
				$rs[distance] = '<span>距您</span><i>'.$rs[distance] .'m</i>';
			}
		}else{
			$rs[distance] = '<span>商家还未上传位置哟</span>';
		}
		$listdb[]=$rs;
	}
	return $listdb;
}
/**
*大分类
**/
function ListOnlySort(){
	global $Fid_db,$module_DB,$fid,$city_id;
	foreach($Fid_db[$fid] AS $key=>$value){
		unset($rs);
		$rs[name]=$value;
		$rs[fid]=$key;
		$rs[url]=get_info_url('',$rs[fid],$city_id);
		$msconfig=$module_DB[$Fid_db[mid][$key]][field][sortid];
		$detail=explode("\r\n",$msconfig[form_set]);
		foreach( $detail AS $key2=>$value2){
			$detail2=explode("|",$value2);
			$url=get_info_url('',$rs[fid],$city_id,$zoneid,$streetid,array('sortid'=>"$detail2[0]"));
			$rs[sortdb][]="<A HREF='$url'>$detail2[1]</A>";
		}
		$listdb[]=$rs;
	}
	return $listdb;
}

?>
这个是AJAX请求的URL,PHP页面文件(商家列表数据)。有点长。。。
xuzuning 2017-09-16
  • 打赏
  • 举报
回复
贴出你的 php 代码
testerAPP 2017-09-15
  • 打赏
  • 举报
回复
引用 3 楼 showbo 的回复:
ajax请求的url也是当前页面?如果是同一个页面处理ajax操作的要die结束其他代码的执行和后续的html输出,要不肯定返回整个页面内容了
对,请求的URL是当前页面,PHP里只有$lng = $_POST['lng']和$lat用来接收传过来的值。请问,我该从哪结束其它代码的执行和后续HTML的输出啊。我被这个问题搞的完全迷糊了。。。
Go 旅城通票 2017-09-15
  • 打赏
  • 举报
回复
引用 2 楼 u012731118 的回复:
[quote=引用 1 楼 showbo 的回复:] 你返回了什么东东也没见。。。应该是返回了js执行了什么刷新操作 Web开发学习资料推荐 ajax对象属性withCredentials Web开发网
感谢您的回复,从console里看返回的就是当前整页的HTML,从<html lang="zh_CN">开始到</html>,这是怎么回事呢。T-T[/quote] ajax请求的url也是当前页面?如果是同一个页面处理ajax操作的要die结束其他代码的执行和后续的html输出,要不肯定返回整个页面内容了
testerAPP 2017-09-15
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
你返回了什么东东也没见。。。应该是返回了js执行了什么刷新操作 Web开发学习资料推荐 ajax对象属性withCredentials Web开发网
感谢您的回复,从console里看返回的就是当前整页的HTML,从<html lang="zh_CN">开始到</html>,这是怎么回事呢。T-T
Go 旅城通票 2017-09-15
  • 打赏
  • 举报
回复
你返回了什么东东也没见。。。应该是返回了js执行了什么刷新操作

Web开发学习资料推荐
ajax对象属性withCredentials
Web开发网
最近的一个项目中,需要通过 JavaScript 提交表单数据到另一个域名下的PHP接口(因为数据较大,需要HTTP POST方式提交),并获取PHP接口的返回值,在页面无刷新、无跳转的情况下,更新div标签内的内容。   浏览器出于安全考虑,是不允许JavaScript代码进行跨域操作。JavaScript 和 AJAX 跨域访问分为两大类,一是本域和子域的交互,二是本域和其他域的交互。   一、本域和子域的交互:www.s135.com 和 blog.s135.com   二、本域和其他域的交互:blog.s135.com 和 api.bz   本域和子域的交互,可以通过iframe设置两个域名document.domain = "s135.com",实现统一s135.com域下的跨域访问。   本域和其他域的交互,可以通过iframe、代理、JS创建动态脚本等几种方法来实现,这里有篇文章对几种方法作了简要的介绍。   iframe、JS创建动态脚本这两种方法,需要开发者能控制两个域,两端都要编写相应的代码,非常麻烦。在本域服务器上用PHP写个代理中转程序,让本域PHP程序去读取远程其他域的数据再返回给自己,是常用的方法。但是,在本域“前端是CDN或Squid缓存服务器,后端才是PHP应用程序服务器”的系统架构下,穿透CDN或Squid去访问不能被缓存的PHP代理中转程序,效率是很低的。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧