有幾種方式與「外國」API進行通信。沒有必要使用ajax。 Ajax僅用於在模板中進行背景調用,觸發您想到的任何事件。
但是,假設你想用Facebook的GraphAPI通信以檢索配置文件
http://graph.facebook.com/bill.clinton
標準的結果序列化爲JSON,它實現輕鬆放入AJAX或任何JavaScript庫,因此而得名的JavaScript對象表示法。
因此,與AJAX的例子可能是:
function callFacebook() {
$.ajax({
type: "GET",
data: ({}),
dataType: 'json',
url: "http://graph.facebook.com/bill.clinton",
success: function(data){
alert("Hi I am former "+data.name);
}
});
}
callFacebook();
在你的JavaScript文件或腳本標籤之間的模板中包含這個你應該得到一個不錯的警告信息:
你好我前總統比爾克林頓
現在你可以把這個警報變成更有意義的東西,並把它放在h1標籤(不知道爲什麼th是有意義的)
$("body").html("<h1>"+data.name+"</h1>");
但有時你會想要檢索數據,並在你的應用程序中做一些與它的服務器端。
因此,創建一個Django URLPATTERN和觀點,例如:
from urllib2 import urlopen
from django.http import HttpResponse
from django.utils import simplejson
def call_bill(request):
url = "http://graph.facebook.com/bill.clinton"
json = urlopen(url).read()
# do whatever you want
return HttpResponse(simplejson.dumps(json), mimetype="application/json")
# add this to your url patterns
url("^call_bill_clinton/$", call_bill)
現在訪問您的網址
其邏輯結果,它也完全有可能通過某個用戶操作觸發異步事件。例如前面提到的ajax示例中的URL參數,也可以是像「/ call_bill_clinton /」這樣的django url。
<!-- add a button to call the function -->
<button onclick="callFacebook();">Call Bill</button>
function callFacebook() {
$.ajax({
type: "GET",
data: ({}),
dataType: 'json',
url: "/call_bill_clinton/",
success: function(data){
alert("Hi I am former "+data.name+" and I came from Django");
}
});
)
// remove the auto call
而且Ajax調用,讓你做同樣的掛羊頭賣狗肉的HTTP請求,您可以使用各種請求方法涼爽的JavaScript事件相結合,像beforeSend事件
beforeSend: function() {
$('#loading').show();
},
凡#loading可能是這樣的:
<div id="loading" style="display:none;">
<img src="{% static "images/loading.gif" %}" />
</div>
很好的解釋。儘管如果OP想要在已經加載的頁面內調用此視圖,但要異步拉取列表,則需要內部ajax請求。但是,如果OP只是直接加載這個完整的頁面,那麼你是對的,它只是一個沒有Ajax的視圖。 – jdi 2012-07-23 18:30:28
我猜這不會在本地機器上工作?我將把代碼推送到我的服務器並在那裏測試,但目前爲止沒有結果。 – kmm 2012-07-24 15:45:14
這應該在開發中工作得很好 – 2012-07-24 18:41:45