jquery ajax在IE上工作,而不是在Firefox/Chrome上工作

jquery ajax在IE上工作,而不是在Firefox/Chrome上工作,jquery,Jquery,我使用jquery实现了一个简单的Ajax调用: jQuery(".deletebutton").on("click", function() { if (confirm("Are you sure you want to delete?")) { jQuery.ajax({ url: 'index.php?option=com_recordings&task=deletevideos&format=raw',

我使用jquery实现了一个简单的Ajax调用:

jQuery(".deletebutton").on("click", function() {
    if (confirm("Are you sure you want to delete?"))
    {
        jQuery.ajax({
            url: 'index.php?option=com_recordings&task=deletevideos&format=raw',
            type: "POST",
            success: function(data){
                console.log("anything?"); //never get here with FF and Chrome
                if (data == 'blah')
                {
                    alert("success"); //only with IE
                }
            }
        });
    }
});
url很奇怪,因为我正在使用Joomla组件开发。它本质上指向一个有
echo“blah”的文件。html只是一个带有类
deletebutton
的按钮

在IE上,此代码工作正常,并发出警报。在FF和Chrome上,它不起作用。检查
jqXHR.status
显示它返回0。我在Firebug中看不到任何东西可以指出这里的问题。知道发生了什么吗

编辑:我注意到它与我的html按钮有关。“当前”按钮位于窗体内:

        <form name="myform" action="">
        <table id="webcam-table" class="pretty">
            <thead>
            <tr>
                <th>Camera Name</th>
                <th>Date Created</th>
                <th>Video Size</th>
                <th>Video Length</th>
                <th>
                    <input type="checkbox" name="checkboxselectall" title="Select All" />
                    <button class="deletebutton" title="Delete the selected videos" >Delete</button>
... //a table with checkboxes (for the form) and other stuff
</form>

摄像机名称
创建日期
视频大小
视频长度
删除
... //带有复选框(表单)和其他内容的表

但是,如果我在这个表单之外创建一个简单的按钮,我的ajax调用将按预期工作。这是怎么回事?

在更新我的jQuery版本后,我成功地运行了您的代码。on()函数是在1.7版中引入的。下面的代码有效。我将变量传递给blah.php,将它们传递回,并在警报中回显它们

$(document).ready(function(){
    jQuery(".deletebutton").on("click", function(event) {
        if (confirm("Are you sure you want to delete?")){
            jQuery.ajax({
                url: 'blah.php?option=com_recordings&task=deletevideos&format=raw',
                type: "POST",
                success: function(data){
                    alert(data);
                }
            });
        }
    });
});
下面是blah.php:

<?php
echo $_GET['option'].' '.$_GET['task'].' '.$_GET['format'];

嘿,实际上这是跨域问题,所以由于安全问题,一些ajax无法在chrome上工作

在chrome中,您可以通过使用以下过程手动禁用web安全来运行此操作

  • 打开命令提示符(运行>命令)
  • 键入以下命令

    "C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security
    
  • 运行此命令时,Chrome将关闭
  • C:\Program Files\Google\Chrome\Application\Chrome.exe
    您可以将其替换为您安装的Chrome.exe路径

  • 运行此命令后,如果存在跨域问题,它将打开运行ajax的chrome。

    我在过去几个小时里一直在努力解决这个问题。我无意中看到了这个帖子。似乎还没有完全解决。。。你真的让我明白了答案


    默认情况下,a与error回调的error抛出参数提供的内容相同?(这是第三个论点)你有没有试着把它变成一个绝对的URL而不是一个相对的URL。ie在URL的开头添加斜杠?另外,您是否查看了开发工具以了解实际请求的URL以及响应是什么?这很可能给你提供问题的好线索。它是否正在加载URL?这是一个404错误吗?若然,原因为何?它正在加载您期望的URL吗?它是否返回错误消息?请仔细查看Firebug或Chrome的“网络”选项卡中的实际请求。如果路径有问题,则肯定会看到它,状态
    zero
    offline
    或URL为unreachable@KevinB不知道你的意思,但我添加了一个错误函数:
    error:function(jqXHR,exception){if(jqXHR.status==0){alert(“表示网络错误”)
    这就是你的意思吗?这确实触发了警报。@Spudley没有尝试绝对URL,但它也解决了这个问题。我在URL中看不到任何问题……至少我可以看到。
    单击
    只是
    上的一个快捷方式。所以没有区别。我运行了最新的jQuery-1.8.3,我也像你所说的那样将它放在表单中,这对我也是。你发布的代码似乎没有任何问题,因为我几乎都是复制和粘贴的,在这里工作得很好。在这种情况下,我喜欢使用分而治之的策略。你似乎认为这与表单有关,所以我会从表单中抽出一大块,看看你是否仍然存在问题。我因此,我会一直把页面分成大块,直到你能把它缩小到可能令人烦恼的小疏忽为止。我只是想帮你。另一个使用AJAX的好工具是Fiddler:
    
    "C:\Program Files\Google\Chrome\Application\chrome.exe" --disable-web-security
    
    $(document).ready(function(){
        jQuery(".deletebutton").on("click", function(event) {
            event.preventDefault();
            event.stopPropagation();
    
            if (confirm("Are you sure you want to delete?")){
                jQuery.ajax({
                    url: 'blah.php?option=com_recordings&task=deletevideos&format=raw',
                    type: "POST",
                    success: function(data){
                        alert(data);
                    }
                });
            }
    
            return false;
        });
    });