Php WAMP和Ajax查询的奇怪行为
我目前正在尝试运行一个脚本,该脚本可以在我的LAMP环境中运行,但不能在WAMP环境中运行:Php WAMP和Ajax查询的奇怪行为,php,jquery,ajax,wampserver,Php,Jquery,Ajax,Wampserver,我目前正在尝试运行一个脚本,该脚本可以在我的LAMP环境中运行,但不能在WAMP环境中运行: $.ajax( { url: '<?php echo ROOT_DIR;?>/member/login-process', type: "post", data: $('form').serialize(), success: function(data)
$.ajax(
{
url: '<?php echo ROOT_DIR;?>/member/login-process',
type: "post",
data: $('form').serialize(),
success: function(data)
{
if (data == 'success')
{
setTimeout(function(){window.location.href = '<?php echo ROOT_DIR;?>/dashboard';}, 2000);
}
else
{
$("#alert").html('<div class="alert alert-error"><i class="icon-exclamation-sign"></i> '+data+'</div>');
}
}
});
$.ajax(
{
url:“/member/login process”,
类型:“post”,
数据:$('form')。序列化(),
成功:功能(数据)
{
如果(数据==“成功”)
{
setTimeout(函数(){window.location.href='/dashboard';},2000);
}
其他的
{
$(“#警报”).html(“”+数据+“”);
}
}
});
当我在灯上试的时候,它工作的很好:我被重定向了。对于WAMP,我不知道为什么,但我有以下错误消息(由“else”生成):
成功
我尝试了typeof(data),结果是“string”。因此,Ajax查询返回的值是“success”字符串,那么为什么忽略“if”呢?试试以下方法:
var go = $.ajax({
type: 'POST',
url: '<?php echo ROOT_DIR;?>/member/login-process',
data: $('form').serialize()
})
.done(function(data) {
console.debug("DATA:");
console.debug(data);
if (data == 'success')
{
setTimeout(function(){window.location.href = '<?php echo ROOT_DIR;?>/dashboard';}, 2000);
}
else
{
$("#alert").html('<div class="alert alert-error"><i class="icon-exclamation-sign"></i> '+data+'</div>');
}
})
.fail(function(msg) {
alert('Error: ' + msg);
})
.always(function() {
});
var go=$.ajax({
键入:“POST”,
url:“/member/login process”,
数据:$('form')。序列化()
})
.完成(功能(数据){
调试(“数据:”);
调试(数据);
如果(数据==“成功”)
{
setTimeout(函数(){window.location.href='/dashboard';},2000);
}
其他的
{
$(“#警报”).html(“”+数据+“”);
}
})
.fail(函数(msg){
警报('错误:'+消息);
})
.always(函数(){
});
success
一直是jQuery中成功回调的传统名称,定义为ajax调用中的一个选项。但是,由于实现了$.Deferred
和更复杂的回调,done
是实现成功回调的首选方法,因为它可以在任何延迟回调上调用。尝试以下方法:
var go = $.ajax({
type: 'POST',
url: '<?php echo ROOT_DIR;?>/member/login-process',
data: $('form').serialize()
})
.done(function(data) {
console.debug("DATA:");
console.debug(data);
if (data == 'success')
{
setTimeout(function(){window.location.href = '<?php echo ROOT_DIR;?>/dashboard';}, 2000);
}
else
{
$("#alert").html('<div class="alert alert-error"><i class="icon-exclamation-sign"></i> '+data+'</div>');
}
})
.fail(function(msg) {
alert('Error: ' + msg);
})
.always(function() {
});
var go=$.ajax({
键入:“POST”,
url:“/member/login process”,
数据:$('form')。序列化()
})
.完成(功能(数据){
调试(“数据:”);
调试(数据);
如果(数据==“成功”)
{
setTimeout(函数(){window.location.href='/dashboard';},2000);
}
其他的
{
$(“#警报”).html(“”+数据+“”);
}
})
.fail(函数(msg){
警报('错误:'+消息);
})
.always(函数(){
});
success
一直是jQuery中成功回调的传统名称,定义为ajax调用中的一个选项。但是,由于实现了$.Deferred
和更复杂的回调,done
是实现成功回调的首选方法,因为它可以在任何延迟回调上调用。ROOT\u DIR等于什么?等于什么。这不是这个bug的问题。是否返回了“成功”?试试看:如果($.trim(data)='success')
@A.Wolff Dude,你是一个米吉西亚人,它会起作用。为什么我只对WAMP而不是LAMP有这种行为?我很确定每台服务器上的两个文件并不完全相同。如果是,请发布相关的php代码(在WAMP上使用),这样我们就可以看到发生了什么,ROOT_DIR等于什么?等于什么。这不是这个bug的问题。是否返回了“成功”?试试看:如果($.trim(data)='success')
@A.Wolff Dude,你是一个米吉西亚人,它会起作用。为什么我只对WAMP而不是LAMP有这种行为?我很确定每台服务器上的两个文件并不完全相同。如果是,请发布相关的php代码(在WAMP上使用),这样我们就可以看到这个详细答案的运行情况,但它不起作用,仍然是同一个问题。然后它很可能是php或Apache配置中的某个东西,因为它是特定于主机的。感谢这个详细答案,但它不起作用,还是同样的问题。那么它很可能是PHP或Apache配置中的某个东西,因为它是特定于主机的。