This tutorial demonstrates how to send JSON data via AJAX (POST method) from jQuery to a PHP script, and then decode that data into usable PHP variables. While this example uses form input, the JSON data origin is flexible.
This AJAX function transmits JSON data to the server-side PHP script:
$.ajax({ type: "POST", url: targetURL, async: false, data: JSON.stringify($('#form').serializeArray()), success: function(data){ console.log(data); return true; }, complete: function() {}, error: function(xhr, textStatus, errorThrown) { console.log('AJAX loading error: ' + textStatus + ' - ' + errorThrown); return false; } });
The generated JSON resembles this (name-value pairs):
data=[{"name":"product","value":"riserva shiraz wine glass"},{"name":"supid","value":"81"},{"name":"brandid","value":"60"},{"name":"blid","value":"7"},{"name":"cid","value":"381"}];
The PHP code decodes the JSON and handles the data:
// Decode JSON string into a PHP associative array $decoded = json_decode($_POST['data'], true); // Note: Changed to $_POST // Output values: echo "Outputting values:\n"; foreach ($decoded as $value) { echo $value["name"] . "=" . $value["value"] . "\n"; } // Set values as PHP variables: echo "\nSetting variables:\n"; foreach ($decoded as $value) { $$value["name"] = $value["value"]; echo $value["name"] . "=" . $$value["name"] . "\n"; }
(Note: The original code used $_GET
; this has been corrected to $_POST
for a POST request.)
Frequently Asked Questions (FAQs)
This section addresses common questions regarding jQuery, PHP, AJAX, and JSON interaction.
Error Handling in jQuery AJAX: Use the .fail()
method within your jQuery AJAX call to catch and handle errors gracefully. The .fail()
callback function receives error information (e.g., xhr
, textStatus
, errorThrown
) allowing for specific error handling.
Sending Multiple Data with jQuery AJAX: Use an object literal in the data
option of $.ajax()
. Key-value pairs within the object represent the data to send. PHP accesses this data via $_POST
or $_GET
.
Using JSON Data Returned from PHP in jQuery: Use $.parseJSON()
to convert the JSON string received from PHP into a JavaScript object for easy access.
Synchronous vs. Asynchronous AJAX: jQuery AJAX is asynchronous by default (async: true
). Setting async: false
makes it synchronous, but this is generally discouraged as it can block the browser.
Sending JSON Objects from jQuery to PHP: Use JSON.stringify()
in jQuery to convert the JavaScript object to a JSON string before sending. PHP uses json_decode()
to parse it.
Using POST and GET Methods in jQuery AJAX: Use $.post()
for POST requests and $.get()
for GET requests. These are simplified versions of $.ajax()
.
Setting Content Type in jQuery AJAX: Use the contentType
option in $.ajax()
. For JSON, set it to "application/json"
.
Handling Successful AJAX Requests: Use the .done()
method in jQuery to handle successful responses.
Cancelling AJAX Requests: Use the .abort()
method to cancel a pending AJAX request. Success isn't guaranteed depending on the browser and request type.
Remember to replace targetURL
with the actual URL of your PHP script. A working example requires a functional PHP script on a server.
The above is the detailed content of jQuery to PHP via AJAX using JSON. For more information, please follow other related articles on the PHP Chinese website!