Javascript 非常奇怪的jQuery/AJAX行为
我有一个对服务器的Ajax调用,只有在我传递Javascript 非常奇怪的jQuery/AJAX行为,javascript,jquery,ajax,alert,Javascript,Jquery,Ajax,Alert,我有一个对服务器的Ajax调用,只有在我传递alert()时才起作用到它。不知道出了什么问题。有人能帮忙吗 客观的 若在PrettyTo iFrame中单击“更新”按钮,那个么(a)调用服务器来运行更新后端数据库的PHP脚本,(b)关闭PrettyTo窗口,以及(c)刷新页面 如果在PrettyTo iFrame中单击“不更新”按钮,只需(a)关闭PrettyTo窗口,以及(b)刷新页面即可 这不起作用(即,没有对服务器进行Ajax调用): jQuery.support.cors = true;
alert()时才起作用代码>到它。不知道出了什么问题。有人能帮忙吗
客观的
若在PrettyTo iFrame中单击“更新”按钮,那个么(a)调用服务器来运行更新后端数据库的PHP脚本,(b)关闭PrettyTo窗口,以及(c)刷新页面
如果在PrettyTo iFrame中单击“不更新”按钮,只需(a)关闭PrettyTo窗口,以及(b)刷新页面即可
这不起作用(即,没有对服务器进行Ajax调用):
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val()
});
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val()
});
alert('this makes it work');
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val(),
success: functions(data) {var $doNothing = data;}
});
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
这很有效!(即,当我有alert()时,会对服务器进行Ajax调用):
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val()
});
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val()
});
alert('this makes it work');
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val(),
success: functions(data) {var $doNothing = data;}
});
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
谢谢
根据答案做了大量修改,但仍然无法使其生效。以下是最新消息:
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val()
});
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val()
});
alert('this makes it work');
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
jQuery.support.cors = true; // needed for ajax to work in certain older browsers and versions
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: 'http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val(),
success: functions(data) {var $doNothing = data;}
});
}
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
您需要在Ajax回调中完成其余的工作
看
您也可以只获取数据:
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.get('http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val(),
function() {
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
}
else {
window.parent.closePP();
}
});
您需要在Ajax回调中完成其余的工作
看
您也可以只获取数据:
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.get('http://mydomain.com/dir/myPHPscript.php?param=' + $('#param').val() + '&id=' + ( $('#id').val() * 1 ) + '&mode=' + $('#mode').val(),
function() {
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
});
}
else {
window.parent.closePP();
}
});
AJAX是异步的。$.ajax()
调用将启动对服务器的请求,然后脚本的其余部分将继续执行,即使请求正在返回服务器
alert()用于“减慢”或暂停代码的其余部分,从而允许ajax请求完成
您需要做的是:
$.ajax({
url: '....';
success: someFunction;
});
当ajax调用成功时,它将调用someFunction()
,这是您执行.location.href操作的地方。ajax是异步的。$.ajax()
调用将启动对服务器的请求,然后脚本的其余部分将继续执行,即使请求正在返回服务器
alert()用于“减慢”或暂停代码的其余部分,从而允许ajax请求完成
您需要做的是:
$.ajax({
url: '....';
success: someFunction;
});
当ajax调用成功时,它将调用someFunction()
,您可以在这里执行.location.href操作。您可以尝试以下操作:
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: '....',
success: function(data) {
window.parent.closePP();
window.top.location.href = $('#redirect').val();
}
});
}
else{
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
}
});
您可以尝试以下方法:
$('input[name="status"]').on("change", function() {
if ($('input:radio[name="status"]:checked').val() == 'Y') {
$.ajax({
url: '....',
success: function(data) {
window.parent.closePP();
window.top.location.href = $('#redirect').val();
}
});
}
else{
window.parent.closePP();
window.top.location.href = $('#redirect').val(); // reloads page
}
});
不知道你的意思是什么,我明白了。谢谢你修改的剧本。谢谢你!!.ajax()和.get()@mplungjan之间有什么区别?我需要做的就是调用服务器端php脚本。在我的特殊情况下,一种方法比另一种更好吗?我尝试了你的答案@mplungjan…无法让它工作,我不断修改它,试图成功关闭()并重定向。但它只关闭并重定向whet status='N'$。get比$.ajax简单得多。仅此而已。如果您不需要所有的错误处理,那么,$.get就是fine。我不确定@mplungjanAh是什么意思,我明白了@mplungjan。谢谢你修改的剧本。谢谢你!!.ajax()和.get()@mplungjan之间有什么区别?我需要做的就是调用服务器端php脚本。在我的特殊情况下,一种方法比另一种更好吗?我尝试了你的答案@mplungjan…无法让它工作,我不断修改它,试图成功关闭()并重定向。但它只关闭并重定向whet status='N'$。get比$.ajax简单得多。仅此而已。如果您不需要所有的错误处理,那么,$.get就很好了,jQuery是从一个表单执行evkkedonChange
。因此,如果status的val=='N',脚本将失败,关闭和重定向将正常工作。如果status='Y',则除了ajax调用之外,脚本可以工作。( thanks@MarcB)我只想在status='Y'时启动ajax调用,然后执行close()和redirect()。我尝试了您的答案@MarcB…无法让它工作,我一直在修改它,试图成功地完成close()和redirect()。但是它只关闭并重定向whet status='N'jQuery是从一个表单执行的evkkedonChange
。因此,如果status的val=='N',脚本将失败,关闭和重定向将正常工作。如果status='Y',则除了ajax调用之外,脚本可以工作。( thanks@MarcB)我只想在status='Y'时启动ajax调用,然后执行close()和redirect()。我尝试了您的答案@MarcB…无法让它工作,我一直在修改它,试图成功地完成close()和redirect()。但是它只会关闭并重定向whet status='N'我尝试了你的答案@chase…无法让它工作我一直在修改它,试图成功关闭()并重定向。但是它只关闭并重定向whet status='N'Dot:我想脚本是正确的,但是我在url初始化时使用了(;)而不是(,)。请修复它,然后再试一次。我确实使用了逗号@Charsee。谢谢。您正在从服务器返回一些针对这个ajax callNo@Charsee的响应——这是没有必要的。我只是使用ajax调用启动一个更新后端数据库的服务器端php脚本。这就是它所做的。我尝试了你的答案@chase…无法让它工作,我不断修改它,试图成功关闭()并重定向。但是它只关闭并重定向whet status='N'Dot:我想脚本是正确的,但是我在url初始化时使用了(;)而不是(,)。请修复它,然后再试一次。我确实使用了逗号@Charsee。谢谢。您正在从服务器返回一些针对这个ajax callNo@Charsee的响应——这是没有必要的。我只是使用ajax调用启动一个更新后端数据库的服务器端php脚本。这就是它的全部功能。最新的不起作用。您必须将关闭和位置更改移动到successI所做的(@mplungjan)中,它既没有关闭也没有重定向。但是后端数据库被ajax调用更新了…最新的将不起作用。您必须将关闭和位置更改移动到successI所做的(@mplungjan)中,它既没有关闭也没有重定向。但是后端数据库被ajax调用更新了。。。