XMLHttpRequest 对象状态码为 0
XMLHttpRequest object status code of 0
我有一个使用 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 参数 = "SessionId=" + ID + "&SST=" + Token;
POSTRequest.withCredentials = 真;
POSTRequest.open("POST", "https://demo.ippayments.com.au/access/index.aspx", 真)
POSTRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
POSTRequest.send(参数)
window.open("IPPPage.html");
"https://demo.ippayments.com.au/access/index.aspx" 这应该与您的 javascript 相同的域,否则,您应该设置 :
Access-Control-Allow-Origin: *
根据目标页面的响应 header 开始工作。参见 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 页面正确集成,您需要使用直接 Post 方法。不使用 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>
我有一个使用 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 参数 = "SessionId=" + ID + "&SST=" + Token; POSTRequest.withCredentials = 真; POSTRequest.open("POST", "https://demo.ippayments.com.au/access/index.aspx", 真) POSTRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded") POSTRequest.send(参数) window.open("IPPPage.html");
"https://demo.ippayments.com.au/access/index.aspx" 这应该与您的 javascript 相同的域,否则,您应该设置 :
Access-Control-Allow-Origin: *
根据目标页面的响应 header 开始工作。参见 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 页面正确集成,您需要使用直接 Post 方法。不使用 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>