jquery $.ajax jsonp

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

    }
});

Как мога да използвам $.ajax dataType: jsonp cross-domain за публикуване на данни?


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)


Не е възможно с обикновен jsonp. Прочетете това

person genesis    schedule 26.08.2011
comment
не сте сигурни как това помага? не предлага решение, а само казва, че не можете да го направите. - person dewd; 11.03.2014

За да отговорите на въпроса си, вместо да ви изпращаме към друга връзка като по-горе:

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