2011-12-12 10 views
7

यदि मैं Jquery.load (file.php) के साथ एक PHP पृष्ठ लोड करता हूं, तो क्या फ़ाइल शामिल php चर का उपयोग कर सकती है जिसे लोड() नामक पृष्ठ पर परिभाषित किया गया था?Jquery load() और PHP चर

+2

हाय @ user1091856 - तो करने के लिए स्वागत करते हैं। अगर यह आपके लिए काम करता है तो जवाब स्वीकार करना अच्छा अभ्यास है (केवल यह प्रश्न नहीं बल्कि आपके पिछले प्रश्नों में से कोई भी चार)। चियर्स! – themerlinproject

उत्तर

13

आप गलत समझ रहे हैं कैसे चीजें काम।

  • पीएचपी से पहले किसी भी ब्राउज़र प्रतिक्रिया ग्राहक के लिए जारी किया जाता है चलाता है, और सभी कोड सर्वर पर चलता है। सभी PHP कोड चलाने के बाद आपकी PHP फ़ाइल में घोषित चर नष्ट हो गए हैं; वे "गायब हो जाते हैं।"
  • जावास्क्रिप्ट के बाद ब्राउज़र प्रतिक्रिया शुरू हो गई है, और सभी कोड क्लाइंट पर चलता है। PHP फ़ाइल के आउटपुट परिणाम को "लोडिंग" करके, आपको PHP के चर, केवल आउटपुट तक कोई पहुंच नहीं मिलेगी।

आप जावास्क्रिप्ट को PHP से कुछ वेरिएबल स्थानांतरित करना चाहते हैं, तो आपको कुछ उत्पादन JSON में अपने PHP स्क्रिप्ट में, डंप कर सकता है जिससे की तरह:

<?PHP 
    header("Content-Type: application/json"); 

    $myVariable = "hello world"; 

    echo json_encode(array(array("myVariable" => $myVariable))); 

    /* Output looks like this: 
     [ 
      { 
       "myVariable": "hello world" 
      } 
     ] 
    */ 
?> 

आपका जावास्क्रिप्ट/JSON कुछ इस तरह दिखना चाहिए:

$.getJSON("test.php", function(result) { 
    console.log(result[0].myVariable); 
}); 

क्या यह समझ में आता है?

+0

मुझे आपकी स्पष्ट व्याख्या पसंद है * क्यों * यह काम नहीं करेगा और यह है कि मैंने जवाब को उखाड़ फेंक दिया। लेकिन जेएसओएन जेनरेट करने के लिए आपकी टिप सादे अनदेखी 'गूंज' कथन के साथ डरावनी है; यही कारण है कि [json_encode()] (http://php.net/json_encode) मौजूद है। –

+0

ठीक है, मेरी माफ़ी। मैं बस इसे समझने में काफी आसान बनाने की कोशिश कर रहा था। यह थोड़ी देर के बाद से मैंने PHP का उपयोग किया है, और मुझे अतीत में PHP से जेएसओएन को क्रमबद्ध करना नहीं था, इसलिए मेरा बुरा। –

+0

'json_encode' का उपयोग करने के लिए मेरा उत्तर संपादित किया गया। –

0

PHPJavaScript द्वारा लोड की गई PHP स्क्रिप्ट में वेरिएबल्स स्कोप PHP स्क्रिप्ट को लोड करने वाले पृष्ठ से अलग है, इसलिए उत्तर नहीं है।

लेकिन आप वैश्विक चर परिभाषित कर सकते हैं या आप जो चाहते हैं उसे प्राप्त करने के लिए सुपर ग्लोबल वेरिएबल्स ($_GET, $_POST, आदि) का उपयोग कर सकते हैं।

+0

आप PHP का उपयोग कर गतिशील रूप से पृष्ठ में जावास्क्रिप्ट द्वारा पारित चर को परिभाषित कर सकते हैं। –

+0

@WatermarkStudios 'जावास्क्रिप्ट द्वारा पारित चर 'ओपी क्या पूछ रहा है उससे अलग है:' शामिल फ़ाइल में php चर का उपयोग किया जा सकता है जिसे लोड()' कहा जाता है। – fardjad

+0

आप उनका उपयोग कर सकते हैं कि टीके कोचेरन ने कैसे वर्णन किया (हालांकि json_encode() की अत्यधिक अनुशंसा की जाती है)। आप सही हैं कि जावास्क्रिप्ट सीधे प्रतिक्रियाओं में लोड होने के अनुक्रम की वजह से PHP चर का उपयोग नहीं कर सकता है, लेकिन PHP वैरिएबल को उसी मान के साथ परिभाषित करने के लिए PHP की एक पंक्ति जोड़ना है, क्योंकि PHP चर के अनदेखी नहीं है, न ही क्या यह खराब अभ्यास है जब तक कि PHP चर के मान संवेदनशील नहीं होते हैं। यदि संवेदनशील डेटा एक मुद्दा है तो सत्र चर का उपयोग करना सबसे अच्छा होगा। –

13

नहीं, आप चर आप अपने file.php लिए उपयोग करना चाहते हैं पारित करने के लिए है:

$('#yourdiv').load('file.php?var1=xyz&var2=xyz&var3=xyz'); 

और फिर आप अपने file.php में उन लोगों के प्राप्त कर सकते हैं:

$var1 = $_GET['var1']; 
$var2 = $_GET['var2']; 
$var3 = $_GET['var3']; 

एक नहीं हैं, तो चर के बहुत सारे तो POST विधि का उपयोग करें:

$('#yourdiv').load('file.php', {var1:x, var2:y, var3:z}) 

और फिर file.php में चर प्राप्त करें:

$var1 = $_POST['var1']; 
$var2 = $_POST['var2']; 
$var3 = $_POST['var3']; 
+0

यह भी काम करता है ... मैं बस 'file.php? Var1 = xyz और var2 = xyz और var3 = xyz''' file.php के साथ बदल दूंगा? Var1 = {$ xyz} और var2 = {$ xyz} और var3 = {$ xyz} '' यदि आप वर्तमान PHP फ़ाइल से आबादी चर का उपयोग कर रहे हैं। फिर, पूरी लाइन को PHP टैग के भीतर से प्रतिबिंबित करना होगा। –

+0

मैं इस विधि की सराहना करता हूं क्योंकि यह मूल jQuery 'लोड' फ़ंक्शन का उपयोग करता है। – RCNeil

0

आपको लोड चर के माध्यम से लोड चर फ़ाइल में उन चर को पारित करना होगा।

उदाहरण:

$("#objectID").load("test.php", { 'choices[]': ["{$choice1}", "{$choice2}"] }); 

चर वर्तमान पीएचपी फाइल में परिभाषित जावास्क्रिप्ट कि नई PHP फ़ाइल को लोड करता है का हिस्सा बनी।

+0

बेशक इस लाइन को PHP टैग के भीतर से प्रतिबिंबित करना होगा। –

5

हाँ, डेटा पैरामीटर का उपयोग, http://api.jquery.com/load/ देखें:

$('#someelement').load(
    "test.php", 
    { 
     'key1': '<?php echo $value1; ?>', 
     'key2': '<?php echo $value2; ?>' 
    } 
); 

पैरामीटर फ़ाइल test.php पर पोस्ट किए गए और सुलभ के रूप में कर रहे हैं:

$_POST['key1'] 
$_POST['key2'] 
+0

यह एक साफ समाधान है, लेकिन ध्यान रखें कि यदि आप वर्तमान PHP फ़ाइल में परिभाषित चर का उपयोग करना चाहते हैं, तो आपको PHP टैग के भीतर से प्रतिबिंबित PHP चर के साथ मानों को स्वैप करना होगा। –

0

JQuery लोड फ़ंक्शन का दूसरा तर्क (पैरा) एक ऑब्जेक्ट या कॉलबैक फ़ंक्शन होना चाहिए, लेकिन यह खाली स्ट्रिंग भी हो सकता है। उस पर निर्भर करता है, लोड पोस्ट भेजता है या अनुरोध प्राप्त करता है।

मुझे प्राप्त करने और पोस्ट के बीच स्वचालित रूप से स्विच करने का विचार था, (उदाहरण के लिए यदि कुकी सेट), क्योंकि अधिक तेज़ और कैश सक्षम है, और पोस्ट अधिक बचा है।

इसकी बदतर कॉलबैक फ़ंक्शन के अंदर सामग्री सहित लोड समारोह लिखने के लिए दो बार ऐसा ही कुछ लिखने के लिए की तुलना में:

//get 
var url="cache_dir/my_bag.html"; 
var params=""; 
if(document.cookie){ 
    //post 
    url="post.php"; 
    params="{my:bag}"; 
    } 
$(selector).load(url,params,function(){ 
... 

    }); 

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

  • कोई संबंधित समस्या नहीं^_^