2015-03-14 2 views
0

У меня есть функция Javascript с использованием объекта XMLHttpRequest, но статус, который я получаю, возвращается 0. Я сделал много поиска, и все, что я придумал, это то, что 0 - это неопределенная ошибка и может быть вызвана множеством причин. Таким образом, я надеюсь, вы, ребята, можете обнаружить ошибку в моем коде.Код состояния объекта XMLHttpRequest 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"); 
    } 

Заранее спасибо.

EDIT: Я добавил строку myCredentials в свой код, но это, похоже, не изменило ситуацию. var parameters = "SessionId =" + ID + "& SST =" + Token; POSTRequest.withCredentials = true; POSTRequest.open ("POST", "https://demo.ippayments.com.au/access/index.aspx", правда) POSTRequest.setRequestHeader ("Content-Type", "применение/х-WWW-форм-urlencoded") POSTRequest.send (параметры) window.open ("IPPPage.html");

+0

ли это помогает .. http://stackoverflow.com/questions/2752657/xmlhttprequest-status-always-returning-0 –

+0

я наткнулся на вопрос о происхождении различных ... он мог быть проблемой, я не уверен, но если это, я не уверен, действительно ли возможно что-то сделать с этим. Возможно, мне нужно спросить IPP, как они ожидают, что я отправлю данные им ... –

+0

Если вы столкнулись с проблемой Cross Origin Resource, вам, вероятно, придется запускать с использованием какого-то сервера, может быть apache или другим способом было бы установить '- disable-web-security' для вашего браузера Chrome ... –

ответ

0

К интегрированным правильно со страницей IPPayments в https://demo.ippayments.com.au/access/index.aspx, вам нужно использовать метод прямого сообщения. Вместо использования объекта XMLHttpRequest используйте форму HTML для отправки идентификатора и токена. Например -

<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> 
+0

То, что я делал, делало все в коде (это приложение/веб-приложение ASP.NET) и просто кодировало SessionID и SST как параметры GET и перенаправляло их на страницу таким образом. –

2

«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> 
+0

Подождите секунду, вы говорите, что мне нужно установить что-то в заголовке ответа другой страницы? Как? o_O –

+1

@MichaelSmith за то, что вы должны искать заголовки ответов об установках с сервера – gabeio

+0

@MichaelSmith Я вижу, что вы используете aspx, поэтому, я думаю, вы можете установить в web.config. –