Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用XMLHttpRequest的X域Post_Javascript_Php_Ajax_Xmlhttprequest_Xdomainrequest - Fatal编程技术网

Javascript 使用XMLHttpRequest的X域Post

Javascript 使用XMLHttpRequest的X域Post,javascript,php,ajax,xmlhttprequest,xdomainrequest,Javascript,Php,Ajax,Xmlhttprequest,Xdomainrequest,我有以下代码块: console.log(1); var xhr = new XMLHttpRequest(); xhr.open('POST', 'http://anothersite.com/deal-with-data.php'); xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded'); console.

我有以下代码块:

console.log(1);
            var xhr = new XMLHttpRequest();
            xhr.open('POST', 'http://anothersite.com/deal-with-data.php');
            xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
            console.log(2);
            xhr.onreadystatechange = function () {
                console.log(3);
                if (this.status == 200 && this.readyState == 4) {
                       console.log(4);
                       xhr.send("formType="+thisFormType+
                        "&mediaCode="+3478+
                        "&car="+carID+
                        "&title="+$('#title').val()+
                        "&firstname="+$('#firstname').val()+
                        "&surname="+$('#lastname').val()+
                        "&tel="+$('#telephone').val()+
                        "&email="+$('#emailaddress').val()+
                        "&postcode="+$('#postcode').val()+
                        "&add1="+$('#add1').val()+
                        "&add2="+$('#add2').val()+
                        "&add3="+$('#add3').val()+
                        "&town="+""+
                        "&county="+""+
                        "&optin-post="+$('#optin-post').attr('checked')+
                        "&optin-tel="+$('#optin-tel').attr('checked')+
                        "&optin-email="+$('#optin-email').attr('checked')+
                        "&optin-sms="+$('#optin-sms').attr('checked')+
                        "&tarID="+targetID+
                        "&campID="+campaignID+
                        "&subID="+subjectID
                    );
                    console.log(5);
                }
            }
            console.log(6);
因此,除了
xhr.onreadystatechange
-我从未获得
控制台.log(4)
-我在PHP和htaccess中启用了
访问控制允许源代码
,并尝试了大量Javascript post函数

问题是,作为一项要求,我需要将来自不支持服务器端语言的服务器上的表单的数据发布到另一个域来处理数据

有什么想法吗?这快把我逼疯了

编辑:我也用
$尝试过。ajax

$.ajax({
            url: 'http://anothersite.com/deal-with-data.php',
            type: "post",
            crossDomain: true,
            data: {
                "formType":thisFormType,
                "mediaCode":3478,
                "car":$('#car').val(),
                "title":$('#title').val(),
                "firstname":$('#firstname').val(),
                "surname":$('#surname').val(),
                "tel":$('#telephone').val(),
                "email":$('#email').val(),
                "postcode":$('#postcode').val(),
                "add1":$('#add1').val(),
                "add2":$('#add2').val(),
                "add3":$('#add3').val(),
                "town":"",
                "county":"",
                "optin-post":$('#opt-post').attr('checked'),
                "optin-tel":$('#opt-tel').attr('checked'),
                "optin-email":$('#opt-email').attr('checked'),
                "optin-sms":$('#opt-sms').attr('checked'),
                "tarID":targetID,
                "campID":campaignID,
                "subID":subjectID
            },
            beforeSend: function() {
                $('#submit').val('Sending...').attr('disabled','disabled');
            },
            success: function(data) {
                console.log("success call");
                console.log(data);
            },
            error: function(err) {
                console.log("error call");
                console.log(err);
            }
        });

现在我也尝试在httpd.conf中启用它:

您不应该在xhr.onreadystatechange中传递
xhr.send
。执行以下操作:

var xhr = new XMLHttpRequest();

xhr.open('POST', 'myurl', true);
xhr.onload = function () {
    if (xhr.status === 200 && xhr.readyState === 4) {
        // do some cool stuff
        console.log('You got a successfull request');
    }
};

xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.send(); // pass your params here

您可能还需要设置访问控制允许方法:POST标头。阅读更多关于

的信息,如问题中所述:“因此,除了
xhr.onreadystatechange
-我从未获得
控制台。日志(4)
”xhr.send不应位于
onreadystatechange
callback@Musa-啊,那么我该如何让这段代码真正起作用呢/“我将如何让这段代码真正工作”从onreadystatechange中发出,这样您就可以实际发出请求。但是,如果jQuery版本不起作用,那么您还有其他一些问题http://MYURL/test.php. 请求的资源上不存在“Access Control Allow Origin”标头。起源'http://asite.local:8080因此不允许访问。现在。但是我在
htaccess
php
文件中设置了
accesscontrolalloworigin
。我设置了
content-type
accesscontrolalloworigin
accesscontrolallowlemethods:POST
但是我仍然得到了x域错误:(你试图从HTTP页面调用HTTPS服务吗?