2011-03-15 16 views
8

में पास करना मेरे पास एक सत्र सत्र चर, $_SESSION['user'] है, जो पूरे सत्र में जीवंत है। मुख्य खंड में, मेरी जावास्क्रिप्ट फ़ाइल शामिल है, scripts.jsPHP वैरिएबल को जावास्क्रिप्ट

यदि मैं निम्न जैसा कुछ चाहता हूं तो मैं सत्र चर को जावास्क्रिप्ट फ़ाइल में कैसे पास करूं?

$.("#btn').click (
    function() { 
     alert('<?php echo $_SESSION['user']; ?>'); 
    } 
) 

<?php ?> के रूप में JavaScript फ़ाइल में मान्यता प्राप्त नहीं है, कोड से काम नहीं होता। इसलिए मुझे PHP फ़ाइल में ही रखना है, लेकिन मैं इसे जावास्क्रिप्ट फ़ाइल में कैसे रखूं?

उत्तर

14

अपने PHP फ़ाइल आप एक वैश्विक varibale के रूप में अपने उपयोगकर्ता सेट कर सकते हैं:

<script type="text/javascript"> 
    var ptamzzNamespace = { 
     sessionUser : '<?php echo $_SESSION['user']; ?>' 
    }   
</script> 

अपने बाहरी जावास्क्रिप्ट कोड शामिल करने से पहले यह शामिल करें।

$.("#btn').click (
    function() { 
     alert(ptamzzNamespace.sessionUser); 
    } 
) 

इसके अतिरिक्त : आप सुनिश्चित नहीं हैं कि अपने सत्र varibale उद्धरण itsself, आप addslashes() उपयोग कर सकते हैं इस समस्या को दूर करने के लिए शामिल कर सकते हैं, तो

फिर अपनी जावास्क्रिप्ट फ़ाइल आप इसका इस्तेमाल कर सकते हैं

:

<?php echo addslashes($_SESSION['user']); ?> भले ही यह कुछ ऐसा उत्पन्न करेगा जो आप वास्तव में प्रदर्शित नहीं करना चाहते हैं (क्योंकि यह स्लेश के साथ एक स्ट्रिंग उत्पन्न करता है) इससे आपकी मदद नहीं होगी कि आपका कोड विफल नहीं होगा। (आर्टेफैक्टो के लिए धन्यवाद)

क्या यह आपके लिए एक विकल्प होगा?

+3

मैं ऐसा नहीं करूँगा। वैश्विक जावास्क्रिप्ट चर लगभग हमेशा एक बुरा विचार हैं। – philonous

+1

क्यों? एकमात्र चीज जो हो सकती है, यह है कि वैश्विक चर कुछ ढांचे में से कुछ मौजूदा लोगों के साथ मिलकर बनता है। इस से आपको रोकने के लिए अपने वैश्विक चरों को स्टोर करने के लिए अपना नामस्थान-ऑब्जेक्ट बनाना आसान है। मैंने यह दिखाने के लिए प्रश्न संपादित किया कि कैसे। – Chris

+0

ठीक है, अपना नामस्थान-ऑब्जेक्ट बनाना निश्चित रूप से कुछ मिश्रण करने का जोखिम कम करता है। लेकिन आपके उत्तर में आपने एक का उपयोग नहीं किया ...;) – philonous

0

पीएचपी के रूप में शामिल जावास्क्रिप्ट फ़ाइल पार्स

जावास्क्रिप्ट निर्देशिका आप में एक .htaccess फ़ाइल बनाएँ और निम्न पंक्ति जोड़ें।

AddHandler php-cgi .js 

<?php ?> टैग अब तक आपकी जावास्क्रिप्ट फ़ाइल द्वारा पहचाने जाने योग्य हैं।

उपयोग अजाक्स यूजर आईडी

लाने के लिए एक फ़ाइल getID.php कहा जाता है जो केवल प्रतिध्वनियों उपयोगकर्ताओं आईडी बनाएं। फिर अपनी जावास्क्रिप्ट फ़ाइल में आप निम्न कोड का उपयोग कर सकते हैं।

$.get('getID.php', function(uid) { 
    alert('User ID is:' + uid); 
}); 

जावास्क्रिप्ट प्रिंटिंग उपयोगकर्ता आईडी सहित पहले एक स्क्रिप्ट टैग बनाएं।

<script type="text/javascript"> 
userID = <?php echo $_SESSION['user']; ?>; 
</script> 

अब आप को चर userID का उपयोग कर उपयोगकर्ताओं आईडी पहुंच होगी।

2

उपयोगकर्ता फ़ाइल (PHP में) को अपनी फ़ाइल में छिपा इनपुट प्रकार में सेट करें। अपने जावास्क्रिप्ट कोड में आप छुपा इनपुट प्रकार मान पढ़ सकते हैं।

+0

कोई बुरा विचार भी नहीं है! – Chris

0

तर्क

नीचे
print ' <script type="text/javascript" language="javascript"> 
function checkForm() 
{ 
    var username = "'.$_SESSION['user'].'"; 
    if(username == '') 
    { 
     alert('No Times selected'); 
     return false; 
     } 
} 
</script>'; 
1

आप PHP के रूप में फाइल .js पार्स करने के लिए अपने सर्वर सेट कर सकते हैं के साथ प्रयास करें। उदाहरण के लिए, अपाचे कॉन्फ़िगरेशन में या।htaccess फ़ाइल:

<FilesMatch "scripts.js"> 
    AddHandler application/x-httpd-php5 .js 
</FilesMatch> 
संबंधित मुद्दे