在一个函数

时间:2017-06-16 11:06:37

标签: javascript jquery ajax cors

我有一个注册表单需要使用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,但彼此之间的间隔不同。

提前致谢!

1 个答案:

答案 0 :(得分:0)

感谢H.Figueiredo,问题在于第二个请求的位置,但是我在网址上输了一个错字。