2013-09-21 5 views
22

मैं नए पेज लोड करने के लिए jQuery के AJAX कोड का उपयोग कर रहा हूं, लेकिन चाहता था कि वह केवल एक div का HTML प्राप्त करे।jQuery AJAX के साथ किसी अन्य पृष्ठ पर div का HTML कैसे प्राप्त करें?

मेरे कोड: HTML:

<body> 
    <div id="content"></div> 
</body> 

स्क्रिप्ट:

$.ajax({ 
    url:href, 
    type:'GET', 
    success: function(data){ 
     $('#content').html(data); 
    } 
}); 

मैं उसे ('div # सामग्री') दूसरे पृष्ठ पर केवल $ के HTML प्राप्त करना चाहता था। यह कैसे करना है?

उत्तर

1

आप वास्तव में ऐसा नहीं कर सकते, एक ajax अनुरोध पूरी फ़ाइल हो जाता है, लेकिन आप सामग्री एक बार यह लिया गया है फ़िल्टर कर सकते हैं:

$.ajax({ 
    url:href, 
    type:'GET', 
    success: function(data) { 
     var content = $('<div>').append(data).find('#content'); 
     $('#content').html(content); 
    } 
}); 

नोट find() के रूप में एक डमी तत्व के प्रयोग केवल वंश के साथ काम करता , और रूट तत्व नहीं मिलेगा।

या jQuery यह तुम्हारे लिए फ़िल्टर करके:

$('#content').load(href + ' #IDofDivToFind'); 

मैं, यह एक क्रॉस-डोमेन अनुरोध नहीं है संभालने रहा है कि काम नहीं करेगा के रूप में, केवल एक ही डोमेन पर पृष्ठों की है।

+0

हाँ मैं इस विधि सही फिल्टर की कोशिश की लेकिन नहीं किया है। –

36

ठीक है, आपको HTML को "निर्माण" करना चाहिए और .content div को ढूंढना चाहिए।

इस तरह:

$.ajax({ 
    url:href, 
    type:'GET', 
    success: function(data){ 
     $('#content').html($(data).find('#content').html()); 
    } 
}); 

सरल!

+0

ऐसा न करें, ऐसा करने से स्क्रिप्ट को दूसरे पृष्ठ से संभावित रूप से चलाने का कारण बन जाएगा - यह एक अजीब समस्या है जो आपको प्रभावित नहीं कर सकती है लेकिन मैं .load का उपयोग करने की अनुशंसा करता हूं जो स्क्रिप्ट को स्ट्रिप करेगा। अला 'var loadHolder = $ ('

'); loadHolder.load (href + '#content', function() { $ ('# content')। LoadHolder.find ('# content')। Html()) }) ' – Shadaez

20

आप उपयोग कर सकते हैं JQuery .load() विधि:

http://api.jquery.com/load/

$("#content").load("ajax/test.html div#content"); 
+0

बिल्कुल सही! कोई विचार यह है कि इसे छवियों को सही तरीके से लोड करने के लिए कैसे प्राप्त किया जाए, जिन्हें सापेक्ष '../' या पूर्ण 'http: // example.com /' के बजाय रूट लिंक '/' दिया जाता है? असल में, आप इसे किसी अन्य साइट पर छवियों को लोड करने के लिए कैसे प्राप्त कर सकते हैं? – fredsbend

11

आप देख रहे हैं अलग डोमेन की सामग्री इस चाल करना होगा के लिए:

$.ajax({ 
    url:'http://www.corsproxy.com/' + 
     'en.wikipedia.org/wiki/Briarcliff_Manor,_New_York', 
     type:'GET', 
     success: function(data){ 
      $('#content').html($(data).find('#firstHeading').html()); 
     } 
}); 
+0

अरे यह ब्रियरक्लिफ है !! : डी मैं व्हाइट प्लेन से हूं – Sticky

+0

ऐसा करने से स्क्रिप्ट को दूसरे पृष्ठ से संभावित रूप से चलाने का कारण बन जाएगा - यह एक अजीब मुद्दा है जो आपको प्रभावित नहीं कर सकता है लेकिन मैं .load का उपयोग करने की सलाह देता हूं – Shadaez

2
$.ajax({ 
    url:href, 
    type:'get', 
    success: function(data){ 
    console.log($(data)); 
    } 
}); 

यह कंसोल लॉग ऑब्जेक्ट की तरह एक सरणी प्राप्त करता है: [मेटा, शीर्षक,,], बहुत अजीब

आप जावास्क्रिप्ट का उपयोग कर सकते हैं:

var doc = document.documentElement.cloneNode() 
doc.innerHTML = data 
$content = $(doc.querySelector('#content')) 
संबंधित मुद्दे