社区首页 >问答首页 >Jquery $.post不使用chrome,而是在IE和FF中工作。

我所面临的问题的代码片段是:

代码语言:javascript
代码运行次数:0
复制
//select the shipping country to display its shipping rate
  $('#country').change(function() {

     if($(this).val() == ""){
          $('#shippingRateDisplay').html('<br /><span style="margin-left:8px">No country selected.</span>');
          return false;
        }
        alert("Before ajax start");
    $.post('ajax_utility/getShippingCostProdDtls/', { country_id: $(this).val(), 
                                                      product_id: <?php echo $this->uri->segment(3); ?>,
                                                      current_currency: '<?php echo $product->currency->cur_id; ?>'}, function(data){   alert("Successful ajax, but chrome is not reaching here");

        if(data.status != 1){
              $('#shippingRateDisplay').html("Shipping rate not set for the specified country");
            }
        else{
            $("#shippingRateDisplay").html("");

            var conShip = '<br /><table width="100%" cellpadding="0" cellspacing="1" bgcolor="#cdcdcd" class="darbluelink" id="shippingDetails">'+
                                    '<tr>'+
                                        ' <td width="20%" bgcolor="#e9e8e8" class="darkblue text-center" style="padding:7px"><b>Country of delivery</b></td>'+
                                        '<td colspan="2" align="center" bgcolor="#e9e8e8" class="darkblue text-center" style="padding:7px"><b>Shipping cost</b><b></b></td>'+
                                        '<td width="24%" bgcolor="#e9e8e8" class="darkblue text-center" style="padding:7px"><b>Service used</b></td>'+
                                        '<td width="16%" bgcolor="#e9e8e8" class="darkblue text-center" style="padding:7px"><b>Estimated shipping time</b></td>'+
                                    '</tr>'+
                                 '</table>';



            var shippingDtl = data.data.service_name == "Any Other" ? data.data.service_any:data.data.service_name;

            var tr = '<tr id="rowShippingDetails'+data.data.id+'">'+
                         '<td bgcolor="#FFFFFF" style="padding:7px" class="text-center">'+data.data.country_name+'</td>'+
                         '<td bgcolor="#FFFFFF" style="padding:7px" class="text-center"><span class="font2a1">For one quantity</span><br />'+data.data.cost_1_qty+'</td>'+
                         '<td bgcolor="#FFFFFF" style="padding:7px" class="text-center"><span class="font2a1">Each additional qty.</span><br />'+data.data.cost_many_qty+'</td>'+
                         '<td bgcolor="#FFFFFF" style="padding:7px" class="text-center">'+shippingDtl+'</td>'+
                         '<td bgcolor="#FFFFFF" style="padding:7px" class="text-center">'+data.data.shipping_time+' day(s)</td>'+
                      '</tr>';           

            $('#shippingRateDisplay').append(conShip);
            $('#shippingDetails').append(tr);   
        }

        }, 'json');
    });
});

该代码基本上获取下拉列表中选定的国家的运输详细信息,并将其显示在一个表中。表有两行,第一行有列标题(如国家、汇率、运输类型等),第二行显示从服务器返回的传送数据。

如果我删除表标题和行创建代码,则会有更清晰的代码:

代码语言:javascript
代码运行次数:0
复制
 //select the shipping country to display its shipping rate
  $('#country').change(function() {

     if($(this).val() == ""){
          $('#shippingRateDisplay').html('<br /><span style="margin-left:8px">No country selected.</span>');
          return false;
        }
        alert("Before ajax start");
    $.post('ajax_utility/getShippingCostProdDtls/', { country_id: $(this).val(), 
                                                      product_id: <?php echo $this->uri->segment(3); ?>,
                                                      current_currency: '<?php echo $product->currency->cur_id; ?>'}, function(data){   alert("Successful ajax, but chrome is not reaching here");

        if(data.status != 1){
              $('#shippingRateDisplay').html("Shipping rate not set for the specified country");
            }
        else{
            $("#shippingRateDisplay").html("");

            var conShip = 'THE_TABLE_HEADER';



            var shippingDtl = data.data.service_name == "Any Other" ? data.data.service_any:data.data.service_name;

            var tr = 'THE SHIPPING ROW CREATED WITH THE JSON DATA';          

            $('#shippingRateDisplay').append(conShip);
            $('#shippingDetails').append(tr);   
        }

        }, 'json');
    });
});

服务器的一般响应之一是:

代码语言:javascript
代码运行次数:0
复制
{
   "data":{
      "id":"4e6a274043ca1",
      "product_id":"131315437838",
      "country":"60",
      "cost_1_qty":"$ 5.00 CAD",
      "cost_many_qty":"$ 5.00 CAD",
      "service_used":"7",
      "service_any":"",
      "shipping_time":"5",
      "country_name":"French Guiana",
      "service_name":"Express\/Expedited International Shipping"
   },
   "status":1

}

这个代码的问题是它在IE和FF中工作得很好,但在Chrome中却有奇怪的行为。问题是,它在最初的几次中运作良好,然后就不能了。我重新启动了我的机器和xampp,然后又是同样的行为,当我从下拉列表中选择一个国家时,它第一次显示了发货表,从第二次它就完全没有响应了。我检查了chrome调试器,post请求是成功的,它返回了一个200 ok响应和json数据。但是,它未能触发第二个警报,这意味着它没有输入回调函数(如果请求成功,将执行回调函数)。

另外,我没有为从服务器返回的响应设置内容类型。所以它的text/html。

以下是请求和响应头

ResponseHeaders

代码语言:javascript
代码运行次数:0
复制
Date: Sun, 11 Mar 2012 14:48:34 GMT
X-Powered-By: PHP/5.2.1
Connection: Keep-Alive
Content-Length: 282
Pragma: no-cache
Last-Modified: Sun, 11 Mar 2012 14:48:34 GMT
Server: Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4 OpenSSL/0.9.8d mod_autoindex_color PHP/5.2.1
Content-Type: text/html
cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Keep-Alive: timeout=5, max=99
Expires: Thu, 19 Nov 1981 08:52:00 GMT

RequestHeaders

代码语言:javascript
代码运行次数:0
复制
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*

任何关于为什么在ajax调用之后没有执行回调函数以及因此没有显示配送表的任何帮助都是非常有用的。谢谢。

更新:I更新了代码以使用$.ajax,下面是我的代码:

$.ajax({ type: "post",

代码语言:javascript
代码运行次数:0
复制
     `url: 'ajax_utility/getShippingCostProdDtls/',`
代码语言:javascript
代码运行次数:0
复制
     `timeout : 5000,`
代码语言:javascript
代码运行次数:0
复制
     `data: { country_id: $(this).val(),`
代码语言:javascript
代码运行次数:0
复制
             `product_id: '<?php echo $this->uri->segment(3); ?>',`
代码语言:javascript
代码运行次数:0
复制
             `current_currency: '<?php echo $product->currency->cur_id; ?>'},`
代码语言:javascript
代码运行次数:0
复制
     `dataType: "json",`
代码语言:javascript
代码运行次数:0
复制
     `success: displayShippingTable,`
代码语言:javascript
代码运行次数:0
复制
     `error: AjaxFailed`
代码语言:javascript
代码运行次数:0
复制
   `});`

函数AjaxFailed(结果){

代码语言:javascript
代码运行次数:0
复制
   alert("FAILED : " + result.status + ' ' + result.statusText);
代码语言:javascript
代码运行次数:0
复制
   alert(result.responseText);
代码语言:javascript
代码运行次数:0
复制
 //  displayShippingTable(result.responseText);  
代码语言:javascript
代码运行次数:0
复制
}  

`

这在Firefox和IE上运行得很好,但在chrome上却比以前更奇怪。当我在运输中选择或更改一个国家时,控制台首先表示

POST ajax_U实用程序/getShippingCostProdDtls/ 200 OK 108 OK

然后在5秒超时后,上面写着

POST ajax_U实用程序/getShippingCostProdDtls/中止108

然后进入AjaxFailed函数,发出警报失败: 200 OK和从服务器返回的json数据。

如果有人能帮助我了解正在发生的事情,那就太好了。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-03-12 20:26:22

好吧,终于我自己解决了。不过还没完全解决。这里我忘记提到的一件重要事情是我正在使用的应用程序是使用jQuery1.3.2。我想得很好,让我们为这个页面使用最新的jquery,这样我就可以试用承诺界面。了。

当我通过包含jQueryjQuery1.7.1.min.js运行页面时,问题立即消失了。装运表装得非常好。因此,我想这是由于jquery版本与chrome之间存在缺陷或不兼容所致。因此,在我的例子中,升级jquery版本解决了问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9656009

复制
相关文章
「Geek-r」数据导入
在掌握一定的 R 编程技能后,我们开始迈入数据分析的殿堂。大部分数据分析事务的数据都不是通过 R 创建,而是来自于各种数据收集软硬件、渠道,包括 Excel、网络等。本章聚焦于如何将数据导入 R 中以便于开始数据分析。对于本章的内容,读者既可以系统地从头到尾深入阅读学习,也可以根据自己实际工作需要或时间限制选择一些重点或感兴趣内容进行掌握。
王诗翔呀
2020/07/03
1.3K0
「Geek-r」数据导入
R中的数据导入与导出
1、数据的导入 导入文本文件 使用read.table函数导入普通文本文件 read.table(file,header=FALSE,sep="",...) #导入csv文件 data1 <- rea
Erin
2018/01/09
2.3K0
R中的数据导入与导出
mysql导入excel文件_将Excel数据导入MySQL「建议收藏」
去年的投资统计月报数据量庞大,原始表格是xls格式(还是EXECL2003的),单个sheet最大只能放几万行,但数据总量有10万行以上,于是只能存成两个sheet。EXECL2010格式倒是单个sheet可以放得下,可是居然不能将数据完整的从一个sheet复制粘贴到另一个sheet(可能是因为行数太多)。正好想学习一下execl数据导入MySQL数据库的方法,于是开始尝试。
全栈程序员站长
2022/10/02
16.1K0
mysql导入excel文件_将Excel数据导入MySQL「建议收藏」
R数据科学整洁之道:使用 readr 进行数据导入
有同学问要怎么把自己的数据读入 R,由于 tidyverse 工具套件的简单高效,是我们数据处理的优先选择。因此这里介绍tidyverse里的两个包:readr、 readxl,一个读取文本文件,一个读取 Excel 文件,这两种文件是平时用得最多的。
简说基因
2022/11/11
7590
R基础——数据的导入与导出(下)
前面两篇文章介绍了导入导出csv文件,txt文件,xlsx文件,接下来,将介绍R连接数据库,从数据库中导入数据。 在我工作中,使用的是sql server,所以将以sql server为主来介绍。R中没有提供sql server的独立DBI,GitHub有一个RSQLserver包,曾在cran中上线过,后来下线了。我主要使用RODBC包连接数据库。 RODBC包 在使用RODBC包连接sql server数据库之前,需要先设置ODBC数据源管理器来配置sql server驱动。 以win7系统为例,配置s
企鹅号小编
2018/01/25
1.5K0
R excel 工作
The package tidyverse includes several useful packages using in data analysis,
大发明家
2021/12/06
1920
文件操作
一般情况下我们需要分析的数据都是存储在文件中,那么利用 R 分析数据的第一步就是将输入读入 R 语言。如果分析的数据是记录在纸质载体上,还需要将数据手动录入,然后保存为一个文件。在 R 中分析文件一般是文件文件,通常是以逗号分隔的 csv 文件,如果数据本身包含逗号,就需要使用制表符 tab 分隔的文件。有些情况下还有需要处理其他统计软件生成的文件,例如 Excel 生成的 xlsx 格式文件等。R 可以很方便地读写多种格式文件。
生信喵实验柴
2022/10/25
2.7K0
文件操作
R语言highfrequency高频金融数据导入
因此对于原始数据,我们可以整理成sample数据的格式,然后使用xts包先将其转换成xts格式。
拓端
2020/07/22
1.1K0
R语言highfrequency高频金融数据导入
使用 VBA 将 Excel 数据导入到 Word 表格中
现要求将一个 Excel 数据表中的每行数据导成一个 Word 文档,即有多少行数据就生成多少个 Word 文档,Excel 每列与 Word 文档中的表格项一一对应。
mzlogin
2020/04/16
4.8K0
使用 VBA 将 Excel 数据导入到 Word 表格中
现要求将一个 Excel 数据表中的每行数据导成一个 Word 文档,即有多少行数据就生成多少个 Word 文档,Excel 每列与 Word 文档中的表格项一一对应。
零式的天空
2022/03/24
4.7K0
R语言入门之数据的导入和导出
在我们平时的研究工作中,经常使用的是逗号分隔文件(.csv文件)、制表符分隔文件(.tsv文件)和空格分隔文件(.txt文件)。当然对于一些基因组文件或者其它格式的文件,各自有各自的特点,原则上R语言可以读取任何格式的文件,只需掌握基本的读取文件方法后按照不同特点调整参数即可。
生信与临床
2020/08/06
3.4K0
使用R语言转存Excel到MySQL
花了两天时间写了一个Excel数据转换脚本,原需求除了要把数据转存到Mysql中,还要对每一条数据进行拆分和重组,并不容易。最终我利用R语言完成了这个小需求,本着总结学习的想法,在此处将多余逻辑删除,抽离出了最基本的Excel转存Mysql的功能,这样也可以算一个小轮子了。(仅做学习用,Navicat等工具可以直接导入Excel)
ZONGLYN
2020/06/29
8250
使用R语言转存Excel到MySQL
R语言之数据获取操作
实际上,R 中有大量的内置数据集可用于分析和实践,我们也可以在R 中创建模拟特定分布的数据。而在实际工作中,数据分析者更多时候面对的是来自多种数据源的外部数据,即各式各样扩展名的数据文件,如 .txt、.csv、.xlsx、.xls 等。不同扩展名的文件代表不同的文件格式,这常常会给分析者带来困扰。
timerring
2023/10/13
4230
如何将多份数据保存在一个excel中?
最傻的方法:一个个导出呗,导到不同的excel表格中。但是问题来了,我要模拟10组参数,每个参数有5个表格,这样做的话会产生50个表格!这多让人头大。
庄闪闪
2021/04/09
1.6K0
添加插件,便于将Excel格式的数据导入Gephi。
4、点击[Convert Excel and csv files to networks]
裴来凡
2022/05/28
1.8K0
添加插件,便于将Excel格式的数据导入Gephi。
.NET 使用OLEDB导入Excel数据
/** * *在本章节中主要讲解的是如何使用OLEDB将Excel中的数据导入到数据库中 * */ using System; using System.Data; using System.Data.OleDb; using System.Data.SqlClient; using System.IO; using System.Text; using System.Web; using System.Web.UI; private DataTable xsldata()
追逐时光者
2022/02/15
8860
Python将数据库数据导入到EXCEL
      每次给运营导数据的时候,如果不用工具的话,就是直接生成.csv格式的文件,这样的文件不支持'sheet',每次还有手工进行,相当的不科学,今天试试Python生成excel文件。
py3study
2020/01/08
2.7K0
使用vb将excel导入PowerDesigner,生成表结构
3、 打开PowerDesigner,创建物理模型(Physical Data Model)
用户5640963
2019/07/25
1.7K0
使用vb将excel导入PowerDesigner,生成表结构
规模数据导入高效方式︱将数据快速读入R—readr和readxl包
Hadley Wickham 和 RStudio团队写了一些新的R包,这些包对于每个需要在R中读入数据的人来说都是非常有用的。readr包提供了一些在R中读入文本数据的函数。readxl包提供了一些在R中读入Excel电子表格数据的函数。它们的读取速度远远超过你目前正在用的一些函数。
悟乙己
2019/05/26
1.1K0
点击加载更多

相似问题

R Openxlsx包(版本4.2.2) -文件中的错误(description= xlsxFile):无效的'description‘参数

10

Osmar package in R "Error in file(con,"r"):无法打开连接“

15

将Excel数据导入R

25

将excel数据导入R

10

R openxlsx Excel导出: XML错误

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文