jquery POST 不会在 https 中返回任何结果


jquery POST does not return any result in https

我有一个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,但它仍然不起作用。

有人有想法吗?

http 和 https 被认为是不同的域,因此这是一个跨域问题。修复是:

header('Access-Control-Allow-Origin: https://domain.com');

将其添加到您的 php 脚本中。或者这仅在开发中,因此您无需太担心:

header('Access-Control-Allow-Origin: *');
.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()方法。