0 0

jquery ajaxt提交在firefox,chrome下遇到的问题10

var str = $('#f1').formSerialize();

$.ajax({
type:'post',
url:'actionHRDemand.php',
data:str,
dataType:'json',
error:function(XMLHttpRequest, textStatus, errorThrown){
                        alert(XMLHttpRequest.status+","+XMLHttpRequest.readyState+","+textStatus+","+errorThrown);                        
},
success:function(result){
if(result['num']==1){
jQuery("#jqgrid").trigger("reloadGrid")
}else{
alert('操作失敗');
}
}
});

以上代码在IE6.0中无问题,在firefox,chrome中,无法提交,页面重新加载了.用firebug调试可以看到str数据post到了当前页面,后台保存

失败.也就是说没有请求url:'actionHRDemand.php',而是请求的自身页面.百思不得其解.后尝试将async:false,数据可以提交后台保存,

但是当前页面任然重新加载.

我的form是这样的:<form name="f1" id="f1" action="" method="post" enctype="application/x-www-form-urlencoded">

如果在action中写入'actionHRDemand.php,页面则会跳转到'actionHRDemand.php页面.

我在当前页面中还使用了jqgrid插件,在加载时请求数据,是没有问题的但是执行以下代码:

 

//查询

function query(){

        var accountid = $("#accountid").val(); 

        var departid = $("#departid").val(); 

        var proposerid = $('#proposerid').val();

        var demandtime = $('#demandtime').val();

        var position = $('#position').val();

        var howmany = $('#howmany').val();

        var matter = $('#matter').val();

 

        if(isNaN(howmany)){

alert("請輸入正確的需求人數");

return;

}

       $("#jqgrid").jqGrid('setGridParam',{ 

            url:'actionHRDemand.php?op=grid',     postData:{'accountid':accountid,'departid':departid,'proposerid':proposerid,'demandtime':demandtime,'position':position,'howmany':howmany,'matter':matter}, 

            page:1

        }).trigger("reloadGrid");

}

发生了同上面一样的问题,页面重载了.

似乎$(function(){});以外的ajax请求全都出问题了.

 

这个问题已经困扰了我好久,特地发出来请广大网友指点.


问题补充:谢谢各位,有两位朋友提到触发事件的按钮的问题,给我提供了思路,现问题已经解决.
做一下分享.
我原本的写法如下:
$("button" ).button();
<button id="" onclick="savedata();">確認</button>
<button id="" onclick="$('#f1').resetForm();">重置</button>
<button id="" onclick="query();">搜索</button>
无论如何在firefox下,chrome下都不可以,修改后如下:
$("input:button" ).button();
<input type="button" id="" onclick="savedata();" value="確認" />
<input type="button" id="" onclick="$('#f1').resetForm();" value="重置"/>
<input type="button" id="" onclick="query();" value="搜索"/>
问题解决了.
因为我对jquery的了解只限于使用,我将出现这个问题的思考了一遍后,发现了问题所在:
1.firefox,chrome两个浏览器,是否将<button></button>视同<input type="submit">?
2.firefox,chrome将form内的button视为submit?
3.jquery的$("button" ).button();只是用来美化按钮,还是同时改变了button的type?我想这个可能性比较小.
分析下来,如果button被firefox,chrome视为submit,就可以合理解释出现的问题了.
button的onclick事件和submit同时触发,ajax发出请求后(默认异步提交),submit事件终止了ajax的请求,因此,在chrome的开发人员工具里面可以看到这一奇怪的现象,status是cancled,type是pending(正常应该是text/html或其他).这也是为什么我之前说,把ajax设为同步提交(async:false)时,数据提交后执行正确,但还会重载页面的问题.因为同步提交时,会锁定浏览器的其他操作,待完成后,才会执行submit事件.
虽然说的比较乱,但是到这里,大家应该都明白了.
解决的方法就是我上面所写的,把button改为input.
还有一个方法,就是阻止submit事件,可以这样做:
$(function(){
   $("form").bind("submit", function() { return false; }); //阻止提交
})
此方法未经验证,只是一点想法.

有两位帮忙分析的朋友都提到了按钮事件的关键点,给我提供了思路,在此表示感谢!

问题补充:再补充,xingkongxieyang 朋友提到将button放到form之外,我没有试过,但是应该是可以的.我之前都是放在form之内的.此问题重点应该是firefox和chrome,IE之间对form内button事件的不同的问题,在此提醒大家注意.

4个答案 按时间排序 按投票排序

0 0

采纳的答案

请检查button是否用成submit button了。

2012年9月12日 14:05
0 0

button是否写在form外面。写里面有这种情况出现。

2012年9月12日 14:38
0 0

估计是你触发事件的这个按钮的问题,是a标签?button还是submit?

2012年9月12日 14:19
0 0

$.ajax({
type:'post',
url:'actionHRDemand.php',
data:str,

改成
$.ajax({
type:'post',
url:'actionHRDemand.php?'+str,

试试呢 你firebug看看请求参数传递了吗 响应是什么

2012年9月12日 12:12

相关推荐

    解决chrome对jQuery的支持问题

    但在某些情况下,尤其是在Chrome浏览器中,可能遇到`$(document).ready()`提前执行的问题,这可能是由于浏览器的优化策略导致的。 为了解决这个问题,我们可以采用以下几种策略: 1. **使用`window.onload`**:`...

    jQuery控件简易日历表格代码兼容firefox、chrome、ie.zip

    标题中的“jQuery控件简易日历表格代码兼容firefox、chrome、ie.zip”指出,这个压缩包提供了一个使用jQuery实现的日历表格插件,该插件能够无缝地在Firefox、Chrome和Internet Explorer(IE)这三大主流浏览器上...

    fireFox.fireDebug.jQuery

    标题“fireFox.fireDebug.jQuery”暗示了我们讨论的核心是关于使用Firefox浏览器的特定版本(25.01)以及两个关键的开发工具:fireDebug和jQuery。在本文中,我们将深入探讨这两个工具,以及它们如何协同工作以优化...

    jquery异步提交form表单

    本文将深入探讨“jQuery异步提交form表单”这一主题,结合给出的标签“源码”和“工具”,我们将分析相关源码,并提供实际应用中的指导。 在传统的HTML表单提交过程中,页面会跳转到服务器返回的结果页面,这在用户...

    JQUERY图片自动垂直居中水平居中-支持IE678910/chrome/firefox/opera

    明锋工作室整理常用资料。本次资料是一个自动居中插件,只要设定div长度和高度,其中的图片会自动铺满容器并且自动居中。...并且该自动居中插件支持IE6、IE7、IE8、IE9、IE10、CHROME、FIREFOX、OPERA。

    使用jQuery.form插件,实现完美的表单异步提交

    在Web开发中,异步表单提交是一种常见需求,它能提供更好的用户体验,因为用户无需等待页面刷新即可完成数据的提交。jQuery.form插件正是为了满足这种需求而设计的,它扩展了jQuery库,使表单异步提交变得更加简单、...

    JQuery表单提交和后台交互源码20130509

    JQuery表单提交和后台交互源码 源码描述: jQuery表单提交和后台交互,非常简单。 也许你习惯了使用基于jQuery的表单插件,裸写也不错 仅使用jQuery提交表单和后台交互,不使用基于jQuery的表单插件 方式1、取到...

    JQuery Ajax提交整个表单

    如果表单提交的目标URL与当前页面不在同一个域下,可能存在跨域问题。这时需要服务器端支持CORS(跨源资源共享)或者使用JSONP(JSON with Padding)等技术。 总结,使用jQuery的Ajax功能提交整个表单涉及的关键点...

    jQuery幻灯片Firefox附加组件中心的风格图片切换

    在本主题中,我们关注的是jQuery幻灯片效果在Firefox浏览器中的应用,特别是在Firefox附加组件中心的风格。这种图片切换功能是网页设计中常用的一种元素,能够为用户提供流畅、动态的浏览体验。 首先,jQuery幻灯片...

    jquery load()在firefox(火狐)下显示不正常的解决方法

    《jQuery load()方法在Firefox下的显示异常及其解决策略》 在Web开发中,jQuery的load()函数被广泛用于异步加载HTML内容到指定元素中,极大地提升了用户体验。然而,有时在Firefox浏览器中,load()可能会遇到显示不...

    jquery file上传预览本地图片支持IE6\7\8\9\10 chrome 火狐

    jquery file上传预览本地图片支持IE6\7\8\9\10 chrome 火狐 网上有很多关于 file上传预览本地图片开源角本但都对支持到IE6\7\8,而且chrome 火狐最新版本也有问题,自己动手丰衣足食。分享给给大家。

    JS日期选择器(兼容IE,FireFox,Oprea,chrome等主流浏览器)

    "JS日期选择器(兼容IE,FireFox,Oprea,chrome等主流浏览器)"是一个专门为JavaScript环境设计的,旨在解决跨浏览器兼容性问题的日期选择工具。这个组件的目标是确保在不同浏览器如Internet Explorer(IE)、Firefox、...

    jQuery 调整字体大小详解 (firefox)

    本文将详细讲解如何使用jQuery在Firefox浏览器中调整文本的大小,同时结合提供的源代码进行分析。 首先,我们需要理解jQuery的核心概念。jQuery通过选择器找到DOM元素,然后对这些元素进行操作。在调整字体大小的...

    兼容IE,firefox,chrome图片缩放功能

    在网页开发中,确保图片在不同的浏览器上,如Internet Explorer(IE)、Firefox和Chrome中能够正确缩放是一项重要任务。由于各个浏览器对CSS、JavaScript等技术的实现可能存在差异,因此需要采用兼容性处理来实现这...

    且firefox显示不正常

    标题“Firefox显示不正常”可能指的是在使用Mozilla Firefox浏览器浏览网页时遇到了布局、样式或功能显示异常的问题。这种问题可能是由于多种原因引起的,包括但不限于CSS兼容性问题、浏览器插件冲突、JavaScript...

    东信EST-100GS身份证阅读器谷歌火狐Chrome Firefox网页浏览器控件下载

    本方案用于规范东信EST系列身份证阅读器谷歌Chrome火狐Firefox插件,支持的型号有:EST-100、EST-100GS、EST-100U、EST-200G、EST-J13X、EST-100G等。 本方案无缝支持最新版本谷歌Chrome火狐Firefox等网页浏览器,...

    使用JQuery实现从JSON对象转换为form提交数据

    在前端开发中,有时我们需要将JSON格式的数据转换成表单(form)的格式进行提交,以便于服务器端处理。在JavaScript的世界里,jQuery库提供了一种便捷的方式来进行这样的转换。本篇文章将深入探讨如何利用jQuery从...

    jquery实现弹窗表单填写提交

    在网页开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了JavaScript的DOM操作、事件处理、动画设计和Ajax交互。本资源重点展示了如何利用jQuery来实现弹窗表单的填写和提交功能,这对于用户交互和数据...

    javascript日期控件兼容FireFox修改版(二)

    描述中提到的"修改后版本存在BUG",暗示了原始的日期控件代码在Firefox上可能遇到了功能异常或视觉问题。为了解决这些问题,开发者通常需要深入理解Firefox和其他浏览器之间的差异,尤其是在处理DOM操作、事件处理...

    Jquery AutoComplete firefox 中文 Ajax (option url or data) Jquery rails 自动完成

    在Firefox浏览器中使用jQuery AutoComplete,可能会遇到一些特定的问题,因为不同的浏览器对某些JavaScript特性可能有不同的实现或支持。这篇博客(链接已提供)可能详细讨论了在Firefox中实现jQuery AutoComplete时...

Global site tag (gtag.js) - Google Analytics