मैं वर्तमान में एक Tumblr विषय विकासशील रहा हूँ और एक jQuery JSON thingamabob निम्न करने के लिए Tumblr एपीआई का उपयोग करता है का निर्माण किया है:JSON त्रुटि संदेश कैसे प्रदर्शित करें?
उपयोगकर्ता, जिस पर "पोस्ट प्रकार" लिंक (जैसे वीडियो पोस्ट), पर क्लिक करेंगे चरण jQuery जेएसओएन का उपयोग उस प्रकार से संबंधित सभी पदों को पकड़ने के लिए करेगा और फिर गतिशील रूप से उन्हें निर्दिष्ट क्षेत्र में प्रदर्शित करेगा।
अब सब कुछ पूरी तरह से आड़ू का काम करता है, उस के साथ Tumblr Tumblr जा रहा है और अपने सर्वर लेने एक अब और फिर हर दस्तक, Tumblr एपीआई thingy कभी कभी ऑफ़लाइन है छोड़कर। अब जब मैं इस समारोह को कम कर दूंगा, तो मैं पूर्ववत नहीं कर सकता, इसलिए मैं जेएसओएन (जो भी कारण से) पोस्ट लोड करने में असमर्थ था, तो मैं कुछ सामान्य त्रुटि संदेश प्रदर्शित करना चाहता हूं।
आप देखेंगे कि मैंने पहले से ही एक त्रुटि संदेश दिखाने के लिए कुछ कोड लिखा है जब jQuery उस पोस्ट प्रकार से संबंधित कोई भी पोस्ट नहीं ढूंढ सकता है लेकिन इसमें किसी भी सर्वर त्रुटियों को शामिल नहीं किया गया है। नोट: मैं कभी कभी यह त्रुटि प्राप्त:
संसाधन लोड करने में असफल: सर्वर (अस्थायी रूप से अनुपलब्ध सेवा) 503 की स्थिति के साथ प्रतिक्रिया व्यक्त की
यह इस 503 त्रुटि संदेश है कि मैं कुछ कोड लिखने की ज़रूरत के लिए है
$('ul.right li').find('a').click(function() {
var postType = this.className;
var count = 0;
byCategory(postType);
return false;
function byCategory(postType, callback) {
$.getJSON('{URL}/api/read/json?type=' + postType + '&callback=?', function(data) {
var article = [];
$.each(data.posts, function(i, item) {
// i = index
// item = data for a particular post
switch(item.type) {
case 'photo':
article[i] = '<div class="post_wrap"><div class="photo" style="padding-bottom:5px;">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/XSTldh6ds/photo_icon.png" alt="type_icon"/></a>'
+ '<a href="' + item.url + '" title="{Title}"><img src="'
+ item['photo-url-500']
+ '"alt="image" /></a></div></div>';
count = 1;
break;
case 'video':
article[i] = '<div class="post_wrap"><div class="video" style="padding-bottom:5px;">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon">'
+ '<img src="http://static.tumblr.com/ewjv7ap/nuSldhclv/video_icon.png" alt="type_icon"/></a>'
+ '<span style="margin: auto;">'
+ item['video-player']
+ '</span>'
+ '</div></div>';
count = 1;
break;
case 'audio':
if (use_IE == true) {
article[i] = '<div class="post_wrap"><div class="regular">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/R50ldh5uj/audio_icon.png" alt="type_icon"/></a>'
+ '<h3><a href="'
+ item.url
+ '">'
+ item['id3-artist']
+' - '
+ item['id3-title']
+ '</a></h3>'
+ '</div></div>';
} else {
article[i] = '<div class="post_wrap"><div class="regular">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/R50ldh5uj/audio_icon.png" alt="type_icon"/></a>'
+ '<h3><a href="'
+ item.url
+ '">'
+ item['id3-artist']
+' - '
+ item['id3-title']
+ '</a></h3><div class="player">'
+ item['audio-player']
+ '</div>'
+ '</div></div>';
};
count = 1;
break;
case 'regular':
article[i] = '<div class="post_wrap"><div class="regular">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/dwxldhck1/regular_icon.png" alt="type_icon"/></a><h3><a href="'
+ item.url
+ '">'
+ item['regular-title']
+ '</a></h3><div class="description_container">'
+ item['regular-body']
+ '</div></div></div>';
count = 1;
break;
case 'quote':
article[i] = '<div class="post_wrap"><div class="quote">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/loEldhcpr/quote_icon.png" alt="type_icon"/></a><blockquote><h3><a href="' + item.url + '" title="{Title}">'
+ item['quote-text']
+ '</a></h3></blockquote><cite>- '
+ item['quote-source']
+ '</cite></div></div>';
count = 1;
break;
case 'conversation':
article[i] = '<div class="post_wrap"><div class="chat">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/MVuldhcth/conversation_icon.png" alt="type_icon"/></a><h3><a href="'
+ item.url
+ '">'
+ item['conversation-title']
+ '</a></h3></div></div>';
count = 1;
break;
case 'link':
article[i] = '<div class="post_wrap"><div class="link">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/EQGldhc30/link_icon.png" alt="type_icon"/></a><h3><a href="'
+ item['link-url']
+ '" target="_blank">'
+ item['link-text']
+ '</a></h3></div></div>';
count = 1;
break;
default:
alert('No Entries Found.');
};
}) // end each
if (!(count == 0)) {
$('#content_right')
.hide('fast')
.html('<div class="first_div"><span class="left_corner"></span><span class="right_corner"></span><h2>Displaying '
+ postType
+ ' Posts Only</h2></div>'
+ article.join(''))
.slideDown('fast')
} else {
$('#content_right')
.hide('fast')
.html('<div class="first_div"><span class="left_corner"></span><span class="right_corner"></span><h2>Hmmm, currently there are no '
+ postType
+ ' posts to display</h2></div>')
.slideDown('fast')
}
// end getJSON
}); // end byCategory
}
});
आप कार्रवाई में प्रदर्शन को देखने के लिए चाहते हैं, तो बाहर Elegantem जाँच लेकिन यह है कि कभी टिप्पणी करते हैं:, लेकिन मैं थोड़ा जानकारी नहीं :)
यहाँ jQuery JSON कोड है कर रहा हूँ टंबलर के स्वभाव के आधार पर, ything आपके लिए बिल्कुल ठीक काम कर सकता है (या नहीं)।
अद्यतन ठीक है, तो निम्न jmorts नीचे उत्तर देने के बाद पत्र के रूप में पास के रूप में 02:00 की अनुमति देता है, मैं सफलता के बिना निम्नलिखित कोड बाहर मंथन किया है - वहाँ कोई ऊपर पॉपिंग चेतावनी है। Myabe मैं एक मपेट हूँ, शायद मैं सिर्फ scheleeeepy हूँ लेकिन अगर आप जेडी लोगों एक और झांकना मैं था ले जा सकते हैं वास्तव में इसे :) सराहना
$('ul.right li').find('a').click(function() {
var postType = this.className;
var count = 0;
byCategory(postType);
return false;
function byCategory(postType, callback) {
$.getJSON('{URL}/api/read/json?type=' + postType + '&callback=?', function(data, textStatus, xhr) { // main callback function
if(xhr.status == 500 || xhr.status == 404 || xhr.status == 503) {
yourErrorHandler(data, textStatus, xhr); // success
} else {
yourCallbackToRunIfSuccessful(data); // failed
}
}
);
function yourCallbackToRunIfSuccessful(data) {
var article = [];
$.each(data.posts, function(i, item) {
// i = index
// item = data for a particular post
switch(item.type) {
case 'photo':
article[i] = '<div class="post_wrap"><div class="photo" style="padding-bottom:5px;">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/XSTldh6ds/photo_icon.png" alt="type_icon"/></a>'
+ '<a href="' + item.url + '" title="{Title}"><img src="'
+ item['photo-url-500']
+ '"alt="image" /></a></div></div>';
count = 1;
break;
case 'video':
article[i] = '<div class="post_wrap"><div class="video" style="padding-bottom:5px;">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon">'
+ '<img src="http://static.tumblr.com/ewjv7ap/nuSldhclv/video_icon.png" alt="type_icon"/></a>'
+ '<span style="margin: auto;">'
+ item['video-player']
+ '</span>'
+ '</div></div>';
count = 1;
break;
case 'audio':
if (use_IE == true) {
article[i] = '<div class="post_wrap"><div class="regular">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/R50ldh5uj/audio_icon.png" alt="type_icon"/></a>'
+ '<h3><a href="'
+ item.url
+ '">'
+ item['id3-artist']
+' - '
+ item['id3-title']
+ '</a></h3>'
+ '</div></div>';
} else {
article[i] = '<div class="post_wrap"><div class="regular">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/R50ldh5uj/audio_icon.png" alt="type_icon"/></a>'
+ '<h3><a href="'
+ item.url
+ '">'
+ item['id3-artist']
+' - '
+ item['id3-title']
+ '</a></h3><div class="player">'
+ item['audio-player']
+ '</div>'
+ '</div></div>';
};
count = 1;
break;
case 'regular':
article[i] = '<div class="post_wrap"><div class="regular">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/dwxldhck1/regular_icon.png" alt="type_icon"/></a><h3><a href="'
+ item.url
+ '">'
+ item['regular-title']
+ '</a></h3><div class="description_container">'
+ item['regular-body']
+ '</div></div></div>';
count = 1;
break;
case 'quote':
article[i] = '<div class="post_wrap"><div class="quote">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/loEldhcpr/quote_icon.png" alt="type_icon"/></a><blockquote><h3><a href="' + item.url + '" title="{Title}">'
+ item['quote-text']
+ '</a></h3></blockquote><cite>- '
+ item['quote-source']
+ '</cite></div></div>';
count = 1;
break;
case 'conversation':
article[i] = '<div class="post_wrap"><div class="chat">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/MVuldhcth/conversation_icon.png" alt="type_icon"/></a><h3><a href="'
+ item.url
+ '">'
+ item['conversation-title']
+ '</a></h3></div></div>';
count = 1;
break;
case 'link':
article[i] = '<div class="post_wrap"><div class="link">'
+ '<a href="' + item.url + '" title="{Title}" class="type_icon"><img src="http://static.tumblr.com/ewjv7ap/EQGldhc30/link_icon.png" alt="type_icon"/></a><h3><a href="'
+ item['link-url']
+ '" target="_blank">'
+ item['link-text']
+ '</a></h3></div></div>';
count = 1;
break;
default:
alert('No Entries Found.');
};
}) // end each
if (!(count == 0)) {
$('#content_right')
.hide('fast')
.html('<div class="first_div"><span class="left_corner"></span><span class="right_corner"></span><h2>Displaying '
+ postType
+ ' Posts Only</h2></div>'
+ article.join(''))
.slideDown('fast')
} else {
$('#content_right')
.hide('fast')
.html('<div class="first_div"><span class="left_corner"></span><span class="right_corner"></span><h2>Hmmm, currently there are no '
+ postType
+ ' posts to display</h2></div>')
.slideDown('fast')
}
// end getJSON
}; // end byCategory
function yourErrorHandler(data,textStatus,xhr) {
alert("Server returned status code " + xhr.status + ". Try again later.");
}
}
});
ध्यान दें कि JSON जावास्क्रिप्ट वस्तुओं की अंकन, नहीं डेटा का अनुरोध करने का एक तरीका है। आप JSON के बजाय AJAX के बारे में बात करने के लिए अपना प्रश्न बदल सकते हैं, क्योंकि इस प्रश्न में JSON महत्वपूर्ण नहीं है। –
मुझे लगता है कि आपने जेएसओएन क्या गलत समझा है। जेएसओएन एक डेटा प्रतिनिधित्व प्रारूप है; आप शायद XmlHttpRequest (आमतौर पर किसी कारण से "AJAX" के रूप में जाना जाता है) का जिक्र कर रहे हैं। –
@ टाइम मशीन - अच्छा बिंदु। जेएसओएन एक्सएमएल की तरह सिर्फ एक डाटा ट्रांसपोर्ट है। जबकि AJAX पृष्ठ को पुनः लोड किए बिना किसी सर्वर से डेटा पुनर्प्राप्त करने के लिए एक तकनीक है, और एक्सएमएल, जेएसओएन, एचटीएमएल, सादा पाठ, और अन्य प्रारूपों में डेटा वापस कर सकता है, इस तथ्य के बावजूद कि AJAX में 'एक्स' 'एक्सएमएल' है । – jmort253