XMLHttpRequest 对象状态代码为 0

XMLHttpRequest object status code of 0

本文关键字:代码 状态 对象 XMLHttpRequest      更新时间:2023-09-26

我有一个使用 XMLHttpRequest 对象的 Javascript 函数,但我不断返回的状态是 0。我做了很多搜索,我得出的只是 0 是一个未定义的错误,可能由无数原因引起。因此,我希望你们能发现我的代码中的错误。

function initiateIPP(ID, Token)
    {
        var POSTRequest = new XMLHttpRequest();
        POSTRequest.onreadystatechange = function ()
        {
            if (POSTRequest.readyState == 4)
            {
                if (POSTRequest.status == 200)
                {
                }
                else
                {
                    alert("An error has occured, response code = " + POSTRequest.status);
                }
            }
        }
        var parameters = "SessionId=" + ID + "&SST=" + Token;
        POSTRequest.open("POST", "https://demo.ippayments.com.au/access/index.aspx", true)
        POSTRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
        POSTRequest.send(parameters)
        window.open("IPPPage.html");
    }

提前谢谢。

编辑:我在代码中添加了一个withCredentials行,但这似乎没有区别。 var 参数 = "会话 ID=" + ID + "&SST=" + 令牌; POSTRequest.withCredentials = true; POSTRequest.open("POST", "https://demo.ippayments.com.au/access/index.aspx", true) POSTRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded") POSTRequest.send(parameters) window.open("IPPPage.html");

> "https://demo.ippayments.com.au/access/index.aspx" 这应该与你的 JavaScript 是同一个域,否则,你应该设置:

Access-Control-Allow-Origin: *

在目标页面的响应标头上获取工作。见 http://enable-cors.org/

例如,您可以在目标服务器上的web.config中放置以下内容:

<configuration>
 <system.webServer>
   <httpProtocol>
     <customHeaders>
       <add name="Access-Control-Allow-Origin" value="*" />
     </customHeaders>
   </httpProtocol>
 </system.webServer>
</configuration>

要与 https://demo.ippayments.com.au/access/index.aspx 的 IPPayments 页面正确集成,您需要使用直接发布方法。不要使用 XMLHttpRequest 对象,而是使用 HTML 表单提交 ID 和令牌。例如-

<form action="https://demo.ippayments.com.au/access/index.aspx" method="post">
    <input type="hidden" name="SST" value="1243123123123123123"/>
    <input type="hidden" name="SessionID" value="53535434535345"/>
    <input type="submit" value="submit" />
</form>