jquery $.ajax jsonp

$.ajax({
    type : "GET",
    dataType : "jsonp",
    url : '/',
    data : {}
    success: function(obj){

    }
});

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


person Thinking80s    schedule 26.08.2011    source источник
comment
Поскольку вы не указываете, с какой ошибкой вы столкнулись, я могу просто указать вам на это: api. jquery.com/jQuery.getJSON, который должен делать то, что вы хотите, но опять же, это просто сокращение того, что вы написали.   -  person m90    schedule 26.08.2011
comment
выложить данные?? можно уточнить..   -  person Baz1nga    schedule 26.08.2011
comment
См. документы: api.jquery.com/jQuery.getJSON Вам необходимо указать обратный вызов функция в вашем URL.   -  person Richard H    schedule 26.08.2011
comment
он хочет отправить запрос POST междоменный   -  person genesis    schedule 26.08.2011
comment
IE8 использует XDomainRequest, но, возможно, пользователь ie6 blogs.msdn.com/b/ieinte...   -  person Thinking80s    schedule 26.08.2011


Ответы (2)



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

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/.

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

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

person Jonathan Marzullo    schedule 31.01.2013
comment
Большое спасибо! После просмотра дюжины примеров мой код наконец-то заработал! - person sahithya; 13.04.2014