2009-07-20 19 views
21

Ne gelen:jquery ajax olsun responseText http url

var response = $.ajax({ 
    type: "GET", 
    url: "http://www.google.de", 
    async: false, 
    success : function() { 
     alert (this); 
    } 
}); 

Nor:

var response2 = $.get("http://www.google.de", function(data) { 
    alert("Data Loaded: " + data); 
}); 

bana bir nesne ver. responseText'a nasıl erişebilirim? jquery ajax fonksiyonları

cevap

3

, başarı geri arama imzadır:

function (data, textStatus) { 
    // data could be xmlDoc, jsonObj, html, text, etc... 
    this; // the options for this ajax request 
} 

Sorduğunuz veri türüne bağlı olarak 'datatype' parametresini kullanarak, sen 'veri' argümanını alırsınız. dokümanlardan

:

dataType (String) Varsayılan: Akıllı Guess (xml veya html). Sunucudan geri beklediğiniz veri türü. Hiçbiri belirtilmezse, jQuery, yanıtın MIME türüne bağlı olarak, başarılı bir şekilde geri bildiriminize, responseXML veya responseText öğesinden akıllıca geçecektir.

mevcut türleri (ve başarınızın geri çağrısına ilk argümanı olarak sonuç) şunlardır:

"xml": jQuery ile işlenebilir bir XML belgesi döndürür.

"html": HTML'yi düz metin olarak döndürür; dahil edilen script etiketleri DOM'a eklendiğinde değerlendirilir.

"script": Yanıtı JavaScript olarak değerlendirir ve düz metin olarak döndürür. "Önbellek" seçeneği kullanılmadıkça önbelleğe almayı devre dışı bırakır. Not: Bu, uzak alan adı istekleri için POST'ları GET'lere dönüştürecektir.

"json": Yanıtı JSON olarak değerlendirir ve bir JavaScript nesnesi döndürür.

"jsonp": JSONP kullanarak bir JSON bloğunda yüklenir. Ekstra "? Geri arama =?" geri aramayı belirtmek için URL’nizin sonuna. (JQuery 1.2'de eklendi)

"text": Düz metin dizesi.

var response = ''; 
$.ajax({ type: "GET", 
     url: "http://www.google.de", 
     async: false, 
     success : function(text) 
     { 
      response = text; 
     } 
}); 

alert(response); 
+0

ilk diğer yorum bakınız deneyin> hiçbir googleHtml metin ?! yanıt olarak: -/ –

30

http://docs.jquery.com/Ajax/jQuery.ajax#options görüyoruz. http://ajaxian.com/archives/cross-site-xmlhttprequest-in-firefox-3

Webkit:

Ve burada bir bakış için yani se Firefox, bununla alanları arası istekleri yapabilir, mesajlar bazı değişik teknikler Aslında alanlar arası ajax (http://usejquery.com/posts/9/the-jquery-cross-domain-ajax-guide)

+0

mmh ie8 ve ff3.5.1'de denedim - ff'de işe yaramayacak mı ?! –

+0

boş -> yanıt yok - ama neden? –

+3

@all - etki alanı ajax etki alanı jsonp etkin olmadıkça çalışmaz - google – karim79

1

ulaşmak için bir mesaj var ve IE8 de bir şekilde onu destekliyor.

20

Karim'in dediği gibi, etki alanı ajax, sunucu izin vermedikçe çalışmaz. Bu durumda Google bunu yapmaz, AMA, birçok durumda bunu aşmanın basit bir yolu vardır. Sadece yerel sunucunuzun HTTP veya HTTPS aracılığıyla alınan içeriği iletmesini sağlayın.PHP kullanarak sanki

Örneğin, sen olabilir:

dosyası oluşturun web_root/ajax_responders/google.php ile:

<?php 
    echo file_get_contents('http://www.google.de'); 
?> 

Ve sonra yerine o bağlanmak için kodunuzu değiştirmek doğrudan javascript Google'ın etki alanına:

var response = $.ajax({ type: "GET", 
         url: "/ajax_responders/google.php", 
         async: false 
         }).responseText; 
alert(response); 
2

Birinci Eğer alanları arası isteklere izin verecek şekilde bir JQuery eklentisi indirmek zorunda. Bu kod ile bunu projenize https://github.com/padolsey/jQuery-Plugins/downloads

İthalat dosya adı verilen query.xdomainsajax.js ve şunları içerir:: Buradan indirin yapabilirsiniz oluştururlar

<script type="text/javascript" src="/path/to/the/file/jquery.xdomainajax.js"></script> 

metinde harici bir web sayfasının html almak için bunu yazmak:

onlar alanlar arası ise jQuery AJAX istekleri başarısız yana
$.ajax({ 
    url: "http://www.website.com", 
    type: 'GET', 
    success: function(res) { 
     var text = res.responseText; 
     // then you can manipulate your text as you wish 
    } 
}); 
+0

Bu soruyla tamamen ilgisiz, ama bu JSFiddle bulabilirim diye düşündüm (http://jsfiddle.net/dcfWV/1 /) ilginç. Dün yayınladığınız soruyla ilgili. – IgnisErus

0

, bir proxy sunucusu kurmak (PHP) cURL kullanabilirsiniz.

bir PHP dosyası responder.php bu içerikleri içerdiğini varsayalım: o alanlar arası isteği işlenecek şekilde

$url = "https://www.google.com"; 
$ch  = curl_init($url); 
curl_set_opt($ch, CURLOPT_RETURNTRANSFER, "true") 
$response= curl_exec($ch); 
curl_close($ch); 
return $response; 

Sizin AJAX isteği bu responder.php dosyasına olmalıdır. yanıtı boş - -

0

bu

alert(data['responseText']);