我有一个jquery脚本,可以在http://mysite.com
上正常运行看起来像这样:
使用Javascript:
$('#form_changePass').live('submit', function() {
//alert('form_changePass cliked');
$.POST("_ajaxCall.php", $(this).serialize(),
function(data){
var json = eval('('+data+')');
//alert(data);
if(json.message=='alert') {
$('div.info').hide();
$('div.alert').show().html(json.string);
}
if(json.message=='info') {
$('div.alert').hide();
$('div.info').show().html(json.string);
}
}
);
return false;
})
PHP脚本:
if ($_POST['formType']=="form_changePass") {
.....
.......
$arr = array( 'message' => 'info', 'string' => $INFO['updatePass']);
echo json_encode($arr);
}
现在,当我将域移动到https时,jquery脚本不再起作用了。我没有得到任何回报价值。没有任何事情发生。
我还尝试在javascript中将POST更改为getJSON,并在php脚本中将$ _POST更改为$ _GET,但它仍无效。
有人有想法吗?
答案 0 :(得分:1)
http和https被视为不同的域名,因此它是一个跨域问题。修复是:
header('Access-Control-Allow-Origin: https://domain.com');
将此添加到您的php脚本中。或者这只是在开发中,所以你不必太担心:
header('Access-Control-Allow-Origin: *');
答案 1 :(得分:-1)
.serialize
将表单数据序列化为字符串,因此请使用参数发送它们。
$('#form_changePass').on('submit', function() {
//alert('form_changePass cliked');
$.POST("_ajaxCall.php", { formData: $(this).serialize() },
function(data){
var json = eval('('+data+')');
//alert(data);
if(json.message=='alert') {
$('div.info').hide();
$('div.alert').show().html(json.string);
}
if(json.message=='info') {
$('div.alert').hide();
$('div.info').show().html(json.string);
}
}
);
return false;
})
并停止使用.live()
方法,现在已弃用它们。使用.on()
方法。