2010-04-30 12 views
6

मेरे पास एक साधारण रूप है जो एक नई फोटो गैलरी उत्पन्न करता है, शीर्षक भेजता है और MySQL को एक विवरण भेजता है और उपयोगकर्ता को उस पृष्ठ पर रीडायरेक्ट करता है जहां वे फ़ोटो अपलोड कर सकते हैं।जीईटी में एम्परसैंड, PHP

सब कुछ ठीक काम करता है जब तक एम्पर्सेंड समीकरण में प्रवेश नहीं करता। जानकारी एक jQuery पृष्ठ संवाद से एक PHP पृष्ठ पर भेजी जाती है जो तब डेटाबेस में प्रविष्टि सबमिट करती है। अजाक्स को सफलतापूर्वक पूरा करने के बाद, उपयोगकर्ता किसी GET यूआरएल के साथ अपलोड पृष्ठ पर भेज दिया जाता है पेज क्या एलबम इसे करने के लिए अपलोड कर रहा है यह बताने के लिए - शीर्षक एक ampersand, अपलोड पृष्ठ पर शीर्षक फ़ील्ड है

$.ajax ({ 
    type: "POST", 
    url: "../../includes/forms/add_gallery.php", 
    data: $("#addGallery form").serialize(), 
    success: function() { 
     $("#addGallery").dialog('close'); 
     window.location.href = 'display_album.php?album=' + title; 
    } 
}); 

हैं ठीक से प्रदर्शित नहीं करता है। क्या GET के लिए एम्परसैंड से बचने का कोई तरीका है?

धन्यवाद

उत्तर

13

सामान्य तौर पर आप URL-encode कुछ भी है कि पूरी तरह से व संख्या नहीं है जब आप उन्हें अपने URL के हिस्से के रूप में पारित करने के लिए चाहता हूँ।

यूआरएल-एन्कोडिंग में, &%26 (क्योंकि 0x26 = 38 = ASCII कोड &) के साथ प्रतिस्थापित किया गया है।

जावास्क्रिप्ट में ऐसा करने के लिए, आप समारोह encodeURIComponent उपयोग कर सकते हैं:

$.ajax ({ 
    type: "POST", 
    url: "../../includes/forms/add_gallery.php", 
    data: $("#addGallery form").serialize(), 
    success: function() { 
     $("#addGallery").dialog('close'); 
     window.location.href = 'display_album.php?album=' + encodeURIComponent(title); 
    } 
}); 

ध्यान दें कि escape नुकसान यह है कि + इनकोडिंग नहीं है, और एक स्थान के रूप में serverside डीकोड किया जाएगा, और इस तरह से बचा जाना चाहिए (source)।

यदि आप PHP स्तर पर यह सर्वरसाइड करना चाहते हैं, तो आपको फ़ंक्शन urlencode का उपयोग करने की आवश्यकता होगी।

+1

मेरा मानना ​​है कि उपयोगकर्ता शीर्षक से जावास्क्रिप्ट में यूआरएल में "शीर्षक" जोड़ा जा रहा है - इस संदर्भ में PHP के urlencode() का उपयोग करने का कोई मौका नहीं है। इग्नासिओ को यह सही मिला - ओपी के मामले में, जावास्क्रिप्ट में एन्कोडिंग की आवश्यकता है। अन्य संदर्भों में, urlencode() का उपयोग करने के लिए सही कार्य होगा, हालांकि। –

+1

उत्तर को यह दर्शाने के लिए अद्यतन किया गया है। :) –

+0

धन्यवाद! खूबसूरती से काम किया। यही कारण है कि हम अपने पृष्ठों का परीक्षण और परीक्षण :) – NightMICU

1
window.location.href = 'display_album.php?album=' + encodeURIComponent(title); 

जावास्क्रिप्ट escape समारोह इन पात्रों सांकेतिक शब्दों में बदलना नहीं होगा: * @ - _ +। /। तो यदि आपके पास "यह + वह" जैसा शीर्षक है, तो प्लस साइन को एक स्थान के रूप में व्याख्या किया जाएगा और PHP को चर "यह" के रूप में प्राप्त होगा।

encodeURIComponent का उपयोग करके निम्नलिखित वर्णों को एन्कोड भी किया जाएगा:, /? : @ & = + $ #

संबंधित मुद्दे