Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax不使用Href(解决方案)_Javascript_Html_Ajax - Fatal编程技术网

Javascript Ajax不使用Href(解决方案)

Javascript Ajax不使用Href(解决方案),javascript,html,ajax,Javascript,Html,Ajax,我在试图找出我的ajax功能在Safari、Chrome和Firefox上不起作用的原因时遇到了很多问题,但在IE上效果很好。我做了一些小改动,一切都开始完美地工作(在每个浏览器中),但我仍然不知道为什么,我想找出主要原因 我有一个Ajax函数respuestas(),可以在数据库中插入一些数据。此函数由以下链接调用:。因此,当我单击链接时,函数会获取适当的信息并将其插入数据库,然后转到link.html。同样,这只适用于IE 我插入一个警报(xml.responseText)以查看我得到的响应

我在试图找出我的ajax功能在Safari、Chrome和Firefox上不起作用的原因时遇到了很多问题,但在IE上效果很好。我做了一些小改动,一切都开始完美地工作(在每个浏览器中),但我仍然不知道为什么,我想找出主要原因

我有一个Ajax函数
respuestas()
,可以在数据库中插入一些数据。此函数由以下链接调用:
。因此,当我单击链接时,函数会获取适当的信息并将其插入数据库,然后转到
link.html
。同样,这只适用于IE

我插入一个
警报(xml.responseText)
以查看我得到的响应。Safari、fireforx和chrome返回空警报

每次我想测试我的函数时,我都厌倦了改变页面,所以我添加了一个按钮来调用我的函数(不去其他网页),它成功了!。现在,我有了这样的功能:
并将
window.location.href=“link.html”
放在我的ajax函数中,因此页面的更改在ajax响应完成后发生,并且工作得非常好


但我不完全理解为什么这是可行的,而另一种方式却不行

这是因为link元素也有它的默认侦听器。因此,要防止单击时执行任何额外操作,应防止执行默认操作。执行此操作的简单方法是单击时返回false

<a onclick="respuestas(this); return false;" href="link.html">LINk</a>

这很简单,但我相信你会明白的。

这里发生的事情是,在
repusetas()
能够执行之前,浏览器已经导航到下一页。为了确保在浏览器跟随链接之前启动脚本,您需要控制单击事件。在jQuery中,它的工作原理如下:

function respuestas(link) {

   /* do what you need here */

   window.location.href = link.href;
}
$('a').bind( 'click', function( event ){
    event.preventDefault();
    repuestas();
    var href = $(this).attr('href');
    window.location.href = href;
});

试试这个Jquery代码

function respuestas()
{
$.ajax({
        type: "post",
        url: "insert.php?data="+data,

        success  : function(data){
             window.location.href="link.html";
        },
        error    : function(){
             alert("Could not ");
        }

         });

}

@mauguerra,因为IE做的事情总是不同于其他符合标准的浏览器。这只是web开发的一条规则。