web-dev-qa-db-ja.com

jquery $ .ajax jsonp

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

    }
});

$ .ajax dataType:jsonp cross-domainを使用してデータを投稿するにはどうすればよいですか?

16
Thinking80s

単純なjsonpでは不可能です。読み取りthis

3
genesis

上記のような別のリンクにあなたを送る代わりにあなたの質問に答えるには:

[〜#〜] 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 . ')';
?>

dataTypejsonpに設定すると、jQueryが自動的にurlの末尾に余分な?callback=?を追加して、コールバックを指定できるようになります。上記のように独自の名前を指定すると、渡すcallback名が使用されます。 jsonコールバック名を指定する必要がある場合は、jsonpCallbackプロパティを使用します。または、dataプロパティにパラメータとして追加できます。さらに情報が必要な場合は、jQuery API Ajax: http://api.jquery.com/jQuery.ajax/ にアクセスしてください。

結果の文字列に;を追加することを忘れないでください。

これが役に立てば幸いです!

38