ajaxMethod.js

---------



//>>>ajax 读取类


function ajax_get_lists(inObj){//使用ajax获取列表,用于筛选页面获取列表
var p_temp = [];
var data = inObj['data'];

for(var obj in data){

var param_val = data[obj];

if (typeof(param_val) == 'object'){//值是对象
var val = [];

for( var val_temp in param_val){
val.push(val_temp + '.' + param_val[val_temp]);
}

val = val.join(',');
}else{
var val = param_val;
}

p_temp.push(obj + '=' + encodeURIComponent(val));//编码非assii
}

$.ajax({
url: inObj.page + '?' + p_temp.join('&'),
type:"GET",
cache :false,
dataType:'html',
ajax_list_obj:inObj.list_obj,
ajaxListObjFun:inObj.callback,
success:function (data){
$(this.ajax_list_obj).html(data);

try{
if (this.ajaxListObjFun){
this.ajaxListObjFun.call(this);
}
}catch(e){}
},
error:function (event,XMLHttpRequest,ajaxOptions,thrownError){ alert('加载列表失败');}
});
}

function searchBy(){//更换了查询
$('#sheng').css('display','none');
$('#shi').css('display','none');

if (!window.shengSelect){
return alert('请选择省份');
}

var inObj = {data:{}};
inObj.page = 'ajaxResult.PHP';
inObj.list_obj = '.ajaxResultDiv';
window.pageSheng = inObj.data.sheng = window.shengSelect;

if (window.shiSelect){
window.pageShi = inObj.data.shi = window.shiSelect;
}

ajax_get_lists(inObj);
}

function page_to(page){//换页
var inObj = {data:{}};
inObj.page = 'ajaxResult.PHP';
inObj.list_obj = '.ajaxResultDiv';
inObj.data.page = page;

if (window.pageSheng){
inObj.data.sheng = window.pageSheng;
}

if (window.pageShi){
inObj.data.shi = window.pageShi;
}

ajax_get_lists(inObj);
}

function loadSheng(){//显示省列表

var inObj = {data:{}};
inObj.page = 'ajaxSheng.PHP';
inObj.list_obj = '#sheng';
inObj.callback = function (){
$('#sheng a').click(
function (){
window.shengSelect = $(this).text();
$('#sheng').css('display','none');
$('#shengSelected').text(window.shengSelect);
loadShi();
}
);
}

ajax_get_lists(inObj);

}

function loadShi(){//显示市列表

$('#shiSelected').text('选择城市');
window.shiSelect = null;
var inObj = {data:{}};
inObj.data.sheng = window.shengSelect;
inObj.page = 'ajaxSheng.PHP';
inObj.list_obj = '#shi';
inObj.callback = function (){
$('#shi a').click(
function (){
window.shiSelect = $(this).text();
$('#sheng').css('display','none');
$('#shiSelected').text(window.shiSelect);
}
);
}

ajax_get_lists(inObj);

}

$(document).ready(
function (){
loadSheng();

$('#searchBt').click(
function (){
searchBy();
}
);
}

);
//<<

-------------------

index.html

---------


<div class="s_search">
<div class="select">
<span id="shengSelected">所在省份</span><a href="#" class="s_ico"><img src="stores_files/ico_select.gif" alt=""></a>
<ul style="display: none;" id="sheng">
</ul>
</div>
<div class="select">
<span id="shiSelected">所在城市</span><a href="#" class="s_ico"><img src="stores_files/ico_select.gif" alt=""></a>
<ul style="display: none;" id="shi">
</ul>
</div>
<input src="stores_files/btn_search2.gif" alt="搜索" type="image" id="searchBt">
<div class="ajaxResultDiv"><!--ajax结果--></div>
</div>

-------------

ajaxResult.PHP

返回数据/处理分页数据

---------------

<?PHP
header('Content-Type: text/html; charset=UTF-8');//设置输出编码
$pageUrl = 'ajaxResult.PHP?';

if (empty($_GET['sheng'])){
exit('错误的省份参数');
}else{
$sheng = trim(urldecode($_GET['sheng']));//必须用decode解码,否则乱码
$sqlWhere['sheng'] = " sheng = '" .$sheng. "' ";
}


if (!empty($_GET['shi'])){
$shi = trim(urldecode($_GET['shi']));//必须用decode解码,否则乱码
$sqlWhere['shi'] = " shi = '" .$shi. "' ";
}

$totalPage = 2;//最大页
$page = (int)$_GET['page'];

if ($page < 1){
$page = 1;
}else if ($page > $totalPage){
$page = $totalPage;
}

//分页实现:上一页-1,下一页+1,大概是这样自己处理分页就是了,包括上shi和sheng的参数就是,可以在这步for生成所有的页的href
$pageCode = '';

for ($forI=1; $forI < $totalPage; $forI++){
if ($page == $forI){// 当前页不加链接
$pageCode .= '&nbsp;<span>[' .$forI. ']</span>';
}else{
$pageCode .= '&nbsp;<a href="#" onclick="page_to(' .$forI. ');">' .$forI. '</a>';
}
}

$lists = array('a','b','c');//db中的result,使用前面的where impode(' and ',$sqlWhere) limit(page) 查询得到

$pageHtml = '<h3>详情</h3>';

foreach( $lists as $key => $val){
$pageHtml .= '<div>' .$val. '</div>';
}

$pageHtml .= '<p class="page">' .$pageCode. '</p>';
echo $pageHtml;

------------

ajaxSheng.PHP

返回省和市列表

-------

<?PHP
header('Content-Type: text/html; charset=UTF-8');//设置输出编码
$lists = array(
'北京'=>array('市1','市2'),
'北京1'=>array('市1有','市2肝'),
'北京2'=>array('市1夺','市2夺'),
'北京3'=>array('市13地','市遥2')
);//可以从数据库读取
$shengHtml = '';

if (empty($_GET['sheng'])){
foreach( $lists as $key=>$val)
{
$shengHtml .= '<li><a href="#">' .$key. '</a></li>';
}
}else{
$sheng = trim( urldecode($_GET['sheng']) );
echo $sheng;
$list = $lists[$sheng];

foreach( $list as $key=>$val)
{
$shengHtml .= '<li><a href="#">' .$val. '</a></li>';
}
}

echo $shengHtml;//输出所有的省的列表

-----------

注意事项,所有的文件使用utf8编码,使用本代码即可;如果是gb2312,还需要urldecode后再utf8转gb2312;

select效果还是很粗糙.如select失去焦点示处理

ajax获取数据/分页/li+div仿select代码的更多相关文章

  1. HTML5、Select下拉框右边加图标的实现代码(增进用户体验)

    这篇文章主要介绍了HTML5、Select下拉框右边加图标的实现代码,深度美化页面增进用户体验效果,需要的朋友可以参考下

  2. 在Sierra上,Brew安装错误单独使用Xcode是不够的

    我正在尝试使用HomeBrewv1.3.8在运行xCodev9.1的MacOSXSerrav10.12.6上安装软件包.安装和错误是然后我运行命令表示软件更新服务器无法使用命令行工具包.我进入xCode,它表明安装了命令行工具.任何帮助将非常感激.西奥解决方法我去了AppleDeveloper网站并直接下载了命令行工具dmg.首先需要设置Apple帐户.命令行工具可在以下位置找到–https://

  3. iOS 10 Safari问题在DOM中不再包含元素

    使用此链接,您可以重现该错误.https://jsfiddle.net/pw7e2j3q/如果您点击元素并从dom中删除它,然后单击链接测试.你应该看到旧的元素弹出选择.是否有一些黑客来解决这个问题?解决方法我能够重现这个问题.问题是,每当您尝试删除其更改事件上的选择框时,iOS10都无法正确解除对选择框的绑定.要解决此问题,您需要将代码更改事件代码放在具有一些超时

  4. iOS Chrome上的HTML SELECT不显示“完成”选项

    我们在iOS上的Chrome中使用UI呈现时遇到问题,特别是HTMLSELECTDropDown元素.例:使用Safari,当您点击SELECT时,屏幕底部会打开一个微调器–您可以点击完成以选择您的选择并返回到表单.但是,当您在iOS上的Chrome中加载完全相同的页面时,不会显示“完成”.用户必须选择他们的选择,然后点击UI上的其他位置返回到表单.非常不直观,用户感觉好像SELECT没有用.有人有解决方案吗?

  5. 安装命令行工具Xcode 5

    我已经尝试过并尝试过但我仍然无法解决问题.我正在尝试安装PebbleSDK1.12并安装Xcode5的命令行工具.每次我在终端尝试xcode-select–install时,我都会收到“无法安装软件,因为它目前在软件更新服务器中不可用”我试图重新安装Xcode,但是没有用.当我进入Xcode-preferences-downloads时,没有命令行工具的部分.我也试过从开发者网站安装它们但无济于事.下载看起来正确,然后我去Xcode看到首选项,并没有列出命令行工具.你们都能提出什么建议吗?

  6. ios – xcodebuild相当于Xcode的“产品&gt;构建&gt;测试”

    我正在尝试编写一个脚本,将iOS应用程序提交给AppThwack(一个“真正的设备”UI测试服务).他们的指导是使用XcodeGUI,并使用BuildFor>Xcode产品菜单中的测试选项.这是有效的,但我无法将其转换为xcodebuild等效项.更一般地说,我们如何确定Xcode传递给xcodebuild的什么参数(假设它使用该工具).解决方法现在可以从Xcode8开始(在写作时在beta版).

  7. xcode – 在REPL中创建目标Swift AST上下文时出错((null))

    在这里,我已经看到有关这个错误的几个的问题,但是没有一个提出的解决方案适用于我.这是我得到的这可能是也可能没有发生在我发出一些我不记得的命令之后.奇怪的是,如果我卸载Xcode,REPL开始正常工作.但是,如果我重新安装Xcode,错误就会回来.我在Xcode7.2.1,顺便说一句.思考?

  8. IOS设备问题与HTML表单输入(type = text)

    所以我有一个HTML登录表单与两个字段:电子邮件和密码.这些可以在除iOS设备之外的任何设备的浏览器上轻松填充.在IOS领域几乎不能关注焦点,一旦焦点,键盘弹出,我开始打字,但实际上没有填充.我已经尝试过Chrome和safari,仍然得到相同的结果.字段保持黑色.Bellow是我的格式如何格式化:请帮助!

  9. 我在哪里可以获得XCode的10.6 SDK

    我有SNowLeopard的测试版,我从DVD上安装了XCode,但它只安装了10.5和10.4SDK.我需要针对10.6构建以验证Apple的错误.解决方法ADCMemberSite.登录并选择下载.如果您是Premier或Select会员,那应该是您可以找到它的地方.如果您不是Premier或Select会员,您将看不到它.

  10. 应用程序关闭时的iOS任务

    我正在构建一个应用程序,通过ajax将文件上传到服务器.问题是用户很可能有时不会有互联网连接,并且客户希望在用户重新连接时安排ajax调用.这可能是用户在离线时安排文件上传并关闭应用程序.应用程序关闭时可以进行ajax调用吗?

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部