I need to write a script that receives and parses a JSON array within the POST array. In order to do this, I'm first trying to just send any old JSON data to my script so I have something to work with.
My receiving script is in PHP (but alternately could be done in Javascript.) Right now, I'm just serializing the POST array and writing it to a text file to make sure something is coming in. What it's writing is an empty array, though.
I'm trying to send the data using an ajax request. This is what I have at the moment:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <script> $(document).ready(function() { var jsondata = JSON.stringify({ val1:"this", val2:"that" }); $.ajax({ url: "http://api.mydomain.com/test/index.php", method: "POST", data: {json: jsondata}, contentType: "application/json", success: function(data){alert(JSON.stringify(data));}, error: function(errMsg) { alert(JSON.stringify(errMsg)); } }); }); </script> </head> <body> </body> </html> I've tried lots of variations on this, too, including
- not stringifying jsondata
- changing data to this:
data: jsondata - using
type:instead ofmethod:in the request - including
datatype: "json"in the request
and some other variations I can't even remember at this point. Am I missing something simple? Or is there an easier way to accomplish this?
EDIT: adding my index.php file
if (isset($_POST)){ // This line is commented out because it breaks it. //$jspost = json_decode($_POST['json']); $jsser = serialize($_POST); echo "I'm here."; // Write to text file $myfile = "response.txt"; $fh = fopen($myfile, 'w') or die("can't open file"); $now = date("n/j/y g:i:s a"); fwrite($fh, $now."\r\n"); fwrite($fh, "I received a POST.\r\n"); fwrite($fh, $jsser); fwrite($fh, "\r\n\n"); fclose($fh); }
JSON.stringify(data)output in your success callback?