我有一个注册表单需要使用CORS的身份验证转到执行SQL检查数据库的文件,如果身份验证密钥有效且未使用。 这有效,但我想对另一个使用SQL将使用键更改的文件执行额外的CORS请求。
SQL非常简单且有效,我的问题是我不知道如何使用CORS两次,就像我使用时一样 xhr.send() 它不会在函数中运行它下面的任何代码。
这是CORS功能:
function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// Check if the XMLHttpRequest object has a "withCredentials" property.
// "withCredentials" only exists on XMLHTTPRequest2 objects.
xhr.open(method, url, true);
} else if (typeof XDomainRequest != "undefined") {
// Otherwise, check if XDomainRequest.
// XDomainRequest only exists in IE, and is IE's way of making CORS requests.
xhr = new XDomainRequest();
xhr.open(method, url);
} else {
// Otherwise, CORS is not supported by the browser.
xhr = null;
}
return xhr;
}
这是我触发CORS的函数,它是一个运行表单的点击:
$('input[type=submit]', '#orm').on('click', function() {
let first = $('input[name="first"]', '#form').val();
var xhr = createCORSRequest("GET", "http://myurl.co.uk/keycheck?licensekey="+ authKey +"");
//This returns 1 if the code exists and is not set as used
xhr.onload = function() {
var result = xhr.responseText;
if(result == 1){
$.ajax({
url: 'ajax.php',
type: 'post',
data: {
'action': 'install',
'authKey': authKey
},
success: function(data, status){
//The AJAX is a database install and file download, it works, and returns success
if(data = 'success'){
var downloaded = 1;
}
},
error: function(xhr, status, error){
//This doesn't happen, so ignore me
}
});
}else if(result == 2){
//here is where the message if your code was invalid come from
}
};
xhr.onerror = function() {
//This doesn't happen, so ignore me
};
xhr.send();
//it works up to this point and then just stops
if(downloaded == 1){
var xhr = createCORSRequest("GET", "http:///myurl.co.uk/keyused.php?licensekey="+ authKey +"");
xhr.onload = function() {
window.location.assign('../success.php');
};
xhr.onerror = function() {
// Error code goes here.
};
xhr.send();
}
});
CORS可以运行一次,检查 keycheck.php ,但不检查 keyuse.php 文件 我的问题是如何在相同的函数中执行两次CORS,但彼此之间的间隔不同。
提前致谢!
答案 0 :(得分:0)
感谢H.Figueiredo,问题在于第二个请求的位置,但是我在网址上输了一个错字。