XMLHttpRequest access denied - ajax

I got problem with request in ajax. I wrote site script like that:
var url = "http://url/api/render";
if (window.XMLHttpRequest) { //
http = new XMLHttpRequest();
if (http.overrideMimeType) {
http.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) {//ie
try {
http = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
http.open('POST', url, false);
After call the function, I got "Access denied" error. What I do wrong ? For testing I typed google address ... this same error

Related

How can I send a synchronous ajax request to my server in onunload function

I need to send a ajax request to my server before web page close, my send code is below.
SendByAajx = function(msg) {
var response;
var xmlHttpReg;
if(window.XMLHttpRequest){
xmlHttpReg = new XMLHttpRequest();
} else if(window.ActiveXObject) {
xmlHttpReg = new ActiveXObject("Microsoft.XMLHTTP");
} else {
throw new Error("Unsupported borwser");
}
if(xmlHttpReg != null) {
xmlHttpReg.open("get", "https://127.0.0.1:57688/test"+'?'+msg, false);
xmlHttpReg.send(null);
if(xmlHttpReg.readyState==4){
if(xmlHttpReg.status == 200) {
var data = JSON.parse(xmlHttpReg.responseText);
if(typeof(data.errorcode) == "number" &&
data.errorcode != 0) {
throw("response error:" + data.errorcode);
}
response = data.result;
} else {
throw new Error("Error");
}
}
}
return response;
}
When I call this function in a button onclick event, it works.
function GetOnClick() {
try{
var result = SendByAajx (“data”);
} catch (e) {
//alert(errorInfo);
}
SetButtonDisabled(false);
}
But when I call this function when the page is unloaded, it doesn't work.
<body onload="javascript:OnLoad();" onunload="javascript:OnUnLoad()">
function OnUnLoad() {
try{
var result = SendByAajx(“data”);
} catch (e) {
//alert(errorInfo);
}
}
When I debug the application, the JS execution stops after this line:
xmlHttpReg.send(null);
It didn’t go to the next line:
if(xmlHttpReg.readyState==4)
The “data” is also not sent to the server.
What is wrong with my program, can ajax be called in an onunload function? What should I do to make it work?

POST data through Ajax without using JQuery methods

I've an Ajax code, through which i want to send securely a private access_token to a url via http POST, how to achieve this using below given code??
function getstatus(url, placeid, access_token)
{
if(window.XMLHttpRequest)
{
xmlRequest = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
try
{
xmlRequest = new ActiveXObject("Msxm12.xMLHTTP");
}
catch(e)
{
try
{
xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
xmlRequest = false;
}
}
}
xmlRequest.open("GET",url,true);
xmlRequest.onreadystatechange = function()
{
if(xmlRequest.readyState==4)
{
if(placeid == "adminstatus")
adminstatus.innerHTML=xmlRequest.responseText;
if(placeid == "dbview")
{
dbview.innerHTML=xmlRequest.responseText;
}
}
}
xmlRequest.send();
}
Consider the parameter "access_token" in the function getstatus is to be http POST-ed!
Take a look at XMLHttpRequest, assuming you are attempting to send the data as key/value pairs,
xmlRequest.open("POST",url,true);//use the post method
xmlRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");//set the content type
...
xmlRequest.send("access_token="+encodeURIComponent(access_token));//send the token

ajax xhr.status = 0 errors after reload / refresh, how to prevent it?

I am running multiple ajax requests on a page, there is nothing wrong with the codes that I know of. It is just that when an ajax call is till running and the user chooses to hit reload or refresh, the browser will return an status error 0, in both ff3 and chrome 14 (IE6+ does not have this problem).
Since I have many request, the browser will alert multiple times and can be very annoying. I have read that this is a mozilla / firefox 3 bug, and it might have been fixed in later versions of ff, but chrome 14 apparently still has this error. But I am building for ff3 and chrome compatibility. There is a bug report seen Here
Does anyone know how to suppress the status error for reload / refresh only?
TIA
my ajax codes
function createXHR() {
var xhrObj;
if (window.XMLHttpRequest) {
// branch for native XMLHttpRequest object - Mozilla, IE7
try {
xhrObj = new XMLHttpRequest();
}
catch (e) {
alert("Your browser does not support this website!");
xhrObj = null;
}//close catche
} //close if
else if (window.ActiveXObject) {
// branch for IE/Windows ActiveX version
try {
xhrObj = new ActiveXObject("Msxml2.XMLHTTP");
} //try
catch(e) {
try{
xhrObj = new ActiveXObject("Microsoft.XMLHTTP");
}//inner try
catch(e) {
alert("Your browser does not support this website!");
xhrObj = null;
} //inner catch
}//catch
} //else if
return xhrObj;
}//eof createXHR
function search(var1, var2) {
var xhrObj = createXHR();
if (xhrObj) {
try {
var queryString = "whatever";
xhrObj.open("GET", "url.php"+queryString,true);
xhrObj.onreadystatechange = function (){callback(xhrObj,var1,var2);};
xhrObj.send(null);
} catch (e) {
alert ('search error');
return;
}
} else {
alert("search error has occured, please refresh and try again");
return; //do plan B. You do have a plan B, no?
}
}//tld close
function callback(xhr,var1, var2) {
if (xhr.readyState == 4) {
try {
if (xhr.status == 200)
{
var s = xhr.responseText;
//dosomething
}
else {
alert('Status error '+xhr.status);
return;
}
}
catch (e) {
alert("live Server Error ");
return;
//this will alert if a call is issued to a nonexistent function / variable
}
}
}//callback close

Adapt ajax for crossdomain

Is it possible adapt this code for crossdomain and how
function makeRequest(url) {
var http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Cannot create an XMLHTTP instance');
return false;
}
http_request.onreadystatechange = function() { alertContents(http_request); };
http_request.open('GET', url, true);
http_request.send(null);
}
function alertContents(http_request) {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
receiveData(http_request.responseText);
} else {
alert("Îòâåò ñåðâåðà ïîëó÷åí, íî åñòü îøèáêà");
}
}
}
The same origin policy prevents JavaScript reading data from different origins under normal circumstances.
You can work around with:
A proxy for the data on the page's origin
JSONP
CORS (limited browser support, but possibly good enough for prime time now)

problem with AJAX request

i hava created the ajax XMLHttpRequest request for getting the data dyanmically ,
here is the code
var XMLHttpReq;
function createXMLHttpRequest() {
if (window.XMLHttpRequest) {
XMLHttpReq = new XMLHttpRequest();
} else {
if (window.ActiveXObject) {
try {
if(XMLHttpReq==null)
XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
if(XMLHttpReq==null)
XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
}
}
}
}
}
this is the method which sends the request
function personList(person) {
createXMLHttpRequest();
var url="query?option=person&userName="+person.innerHTML;
XMLHttpReq.open("GET", url, true);
XMLHttpReq.onreadystatechange =personListResponse;
XMLHttpReq.send(null);
}
function personListResponse() {
if (XMLHttpReq.readyState == 4) {
if (XMLHttpReq.status == 200) {
var xml=XMLHttpReq.responseXML;
}
}
}
the request is sent to the servlet only for the first time,when i try for the second the request is not sent ,instead am getting the previous response what i got earlier
I suppose it's cache.
Try adding this before the request:
XMLHttpReq.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
XMLHttpReq.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
XMLHttpReq.setRequestHeader("Pragma", "no-cache");
If it doesn't work, try adding an additional parameter to your url, making it unique and therefore, not caching.
var url="query?option=person&userName="+person.innerHTML + "&d=" + new Date().getTime()
I really don't like this solution, but it helps you to know if the problem is related to cache.

Resources