jquery ajax在IE上工作,而不是在Firefox/Chrome上工作
我使用jquery实现了一个简单的Ajax调用: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(".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;
});
});