JSONP mit jQuery und PHP
Was macht JSONP?
Mit JSONP1) ist ein Cross-Site-Data Retrieval mittels Javascript möglich. Da ein XmlHttpRequest aber nicht möglich ist, wird bei JSONP ein externes Script mit einem Objekt erzeugt.
Ein Beispiel für ein Script, dass bei einer Same-Origin-Anfrage „normales“ JSON und bei einer JSONP-Anfrage ein JSONP zurückgibt, ist unten dokumentiert.
Code
Javascript
$.ajax({ url:'[url]', dataType: 'jsonp', jsonp: 'jsonp_callback', type: 'get', data: $('form').serialize(), success: function( json ){ if( json == null ) { alert('Keine Ergebnisse') } var jLen = json.length; html = ''; for( var i = 0; i < jLen; i++ ){ html += '<label>'; html += '<input type="checkbox" name="' + _select+'" value="'+json[i][fields[0]]+'" />' + json[ i ][ fields[1] ]; html += '</label>' } _target.html( html ); }, error: function(e){alert(e)} });
PHP
<?php require_once( 'MDB2.php' ); require_once( 'MDB2/Driver/mysqli.php' ); include( 'includes/config.db.inc.php' ); // db config include( 'includes/functions.db.inc.php' ); // db connection management $query = $_POST['query']; // read query from post if( $_POST['query'] == "" ) { $query = $_GET['query']; // read query from get } // connect DB dbConnect(); //get Result Object $xResObj = dbPutQuery($query); // set header to put JSON Content //header( 'Content-Type: text/json' ); // convert result object to json and print $data = json_encode( $xResObj ); if( $_GET['jsonp_callback'] ) { echo $_GET['jsonp_callback'] . '(' . $data . ');'; } else { echo $data; }
1)
JSON „with padding“