Solved

Ajax post- Cross domain request XDR

Posted on 2014-01-10
2
434 Views
Last Modified: 2014-02-04
This is my JavaScript code to make XDR post request:

if(isIE()) {
    xdr = new XDomainRequest();
    if (xdr) {
        xdr.onerror = err;
        xdr.ontimeout = timeo;
        xdr.onload = loadd;
        xdr.timeout = 10000;
        xdr.open('POST', url);
        xdr.send('myval=abc'); 
    } 
}

Open in new window


And when I try to access the variable myval in PHP:

if(isset($HTTP_RAW_POST_DATA)) {
  parse_str($HTTP_RAW_POST_DATA); // here you will get variable $myval
  if($myval== 'abc') {
  echo "TRUE !";
  }
}
else {
 echo 'NO POST DATA';
}

Open in new window


I get the output as 'NO POST DATA'. Could anyone help me in finding what is wrong here? Many thanks.
0
Comment
Question by:drl1
  • 2
2 Comments
 
LVL 34

Accepted Solution

by:
gr8gonzo earned 500 total points
ID: 39771337
1. Make sure you're following all the rules here:
http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

2. $HTTP_RAW_POST_DATA is not enabled / available by default. You need to have always_populate_raw_post_data enabled in your php.ini file:
http://www.php.net/manual/en/ini.core.php#ini.always-populate-raw-post-data
(and most setups need to restart PHP/Apache for php.ini changes to take effect)

Alternatively, you can use the php://input stream, which will give you the same data without incurring the performance cost of forcing PHP to always make that raw data available, even if you don't need to use it on other pages.

Courtesy of Ray Paseur's comment on php.net:
<?php $postdata = file_get_contents("php://input"); ?>

Open in new window


That said, the $_POST array is probably what you're looking for, not the raw POST data. For example:

if(isset($_POST["myval"]))
{
  echo $_POST["myval"]; // Should display abc
}

Open in new window


Now, if the intention is to post with the multipart/form-data encoding (usually when you need to also upload files), then the raw data won't even be available. You'll NEED to look at the $_POST array to get that data.
0
 
LVL 34

Expert Comment

by:gr8gonzo
ID: 39771362
By the way, there's a PHP-specific forum area here that would better answer these types of questions in the future.
0

Featured Post

Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Re-imbursement Claim System 3 70
cookies analysis tools 2 92
Help with a redirect in web.config file 8 42
Troubleshoot SharePoint 2013 Excel Services on IE 11 14 73
Citrix XenApp, Internet Explorer 11 set to Enterprise Mode and using central hosted sites.xml file.
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Learn how to set-up custom confirmation messages to users who complete your Wufoo form. Include inputs from fields in your form, webpage redirects, and more with Wufoo’s confirmation options.
Shows how to create a shortcut to site-search Experts Exchange using Google in the Chrome browser. This eliminates the need to type out site:experts-exchange.com whenever you want to search the site. Launch the Search Engine Menu: In chrome, via you…

773 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question