JQuery $ .AJAX JSONP - PullRequest
       17

JQuery $ .AJAX JSONP

16 голосов
/ 26 августа 2011
$.ajax({
    type : "GET",
    dataType : "jsonp",
    url : '/',
    data : {}
    success: function(obj){

    }
});

Как я могу использовать $ .ajax dataType: кросс-домен jsonp для публикации данных?

Ответы [ 2 ]

38 голосов
/ 31 января 2013

Чтобы ответить на ваш вопрос вместо отправки по другой ссылке, как указано выше:

JS :

$.ajax({
     type : "GET",
     dataType : "jsonp",
     url : "http://domainname.com/json.php?callback=?", // ?callback=?
     success: function(data){
           // do stuff with data
     }
});

PHP может выглядеть так:

<?php
include('connect.php');
$sql = "SELECT id, name, items FROM tablename ORDER BY id ASC"; 
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
    $rows[] = array(
            "id" => $row['id'], 
            "name" => $row['name'], 
            "items" => $row['items']);
}
$json = json_encode($rows);
$callback = $_GET['callback'];
echo $callback.'('. $json . ')';
?>

Установка dataType на jsonp позволит jQuery автоматически добавить дополнительный ?callback=? в конец вашего url для указания обратного вызова. Если вы укажете свой собственный, как выше, он будет использовать имя callback, которое вы передаете. Если вам нужно указать имя обратного вызова json, используйте свойство jsonpCallback. Или вы можете добавить в качестве параметра к свойству данных. Если вам нужна дополнительная информация, пожалуйста, посетите jQuery API Ajax: http://api.jquery.com/jQuery.ajax/.

Не забудьте добавить ; в строку результата.

Надеюсь, это поможет!

3 голосов
/ 26 августа 2011

Это невозможно с простым jsonp. Читать это

...