2011-05-12 12 views
13

मैंजावास्क्रिप्ट में एक PHP फ़ंक्शन कैसे कॉल करें?

index.php

<select id="year_list" name="year_list" onchange="check_year_event('year_list', 'event_list');" > . . . </select> 

<select id="event_list" name="event_list" onchange="check_year_event('year_list', 'event_list');" > . . . </select> 
. 
. 
. 
<?php 
function checkYearandEvent($year, $event) { 
    $year_event = mysql_query("SELECT * FROM year_event WHERE year = '$event' AND event = '$event'") 

    if (mysql_num_rows($year_event) > 0) { 
    // do this 
    } 

} 
?> 

myscripts.js

function check_year_event(year_id, event_id) { 
var year = document.getElementById(year_id).value; 
var event = document.getElementById(event_id).value; 

// call PHP function (but I don't know how): checkYearandEvent(year, event); 

} 

मेरा प्रश्न है कैसे मैं PHP समारोह हर बार उपयोगकर्ता select में से किसी का मूल्य बदलता है कहते हैं तत्व।

+0

कृपया पहले इस आलेख को पढ़ें: http://answers.yahoo.com/question/index?qid=20090602184659AAjObIj – Marcin

+14

याहू उत्तर, वास्तव में? –

+1

@RocketHazmat मुझे पता है कि यह प्राचीन है लेकिन एलओएल – MonkeyZeus

उत्तर

8

आपको AJAX का उपयोग करने की आवश्यकता है।

myscripts.js

function AjaxCaller(){ 
    var xmlhttp=false; 
    try{ 
     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
    }catch(e){ 
     try{ 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     }catch(E){ 
      xmlhttp = false; 
     } 
    } 

    if(!xmlhttp && typeof XMLHttpRequest!='undefined'){ 
     xmlhttp = new XMLHttpRequest(); 
    } 
    return xmlhttp; 
} 

function callPage(url, div){ 
    ajax=AjaxCaller(); 
    ajax.open("GET", url, true); 
    ajax.onreadystatechange=function(){ 
     if(ajax.readyState==4){ 
      if(ajax.status==200){ 
       div.innerHTML = ajax.responseText; 
      } 
     } 
    } 
    ajax.send(null); 
} 

function check_year_event(year_id, event_id) { 
var year = document.getElementById(year_id).value; 
var event = document.getElementById(event_id).value; 

    callPage('file.php?year='+year+'&'+'event=+'+event,document.getElementById(targetId)); 
} 

file.php

<?php 

    function checkYearandEvent($year, $event) { 
     $year_event = mysql_query("SELECT * FROM year_event WHERE year = '$event' AND event = '$event'") 

     if (mysql_num_rows($year_event) > 0) { 
     // do this 
     } 

    } 
    echo checkYearandEvent($_GET['year'], $_GET['event']); 
?> 
+0

क्या होगा यदि 'checkYearandEvent()' को जावास्क्रिप्ट चर में कुछ वापस करने की आवश्यकता है? –

+0

आप '

7

आप इस तरह से ऐसा करने में सक्षम नहीं होंगे जिस तरह से आप समाप्त हो रहे हैं। ब्राउजर को एचटीएमएल प्राप्त करने से पहले सर्वर पर PHP निष्पादित किया जाता है। दूसरी ओर, जावास्क्रिप्ट ब्राउज़र में चलता है और HTML बनाने के लिए उपयोग किए गए PHP (या किसी अन्य सर्वर साइड भाषा) का कोई ज्ञान नहीं है।

एक php फ़ंक्शन को "कॉल" करने के लिए, आपको सर्वर पर अनुरोध वापस करना होगा (जिसे अक्सर AJAX कहा जाता है)। उदाहरण के लिए, आपके पास checkYear.php स्क्रिप्ट हो सकती है जो ईवेंट की जांच करता है और कुछ एचटीएमएल देता है यह दर्शाता है कि चेक सफल हुआ है या नहीं। जब HTML खंड जावास्क्रिप्ट पर वापस आ जाता है, तो आप इसे पृष्ठ में इंजेक्ट करते हैं।

आशा है कि इससे मदद मिलती है!

2

जावास्क्रिप्ट एक क्लाइंट साइड भाषा है, PHP एक सर्वर साइड भाषा है। इसलिए आप जावास्क्रिप्ट कोड से सीधे PHP फ़ंक्शंस को कॉल नहीं कर सकते हैं। हालांकि, आप क्या कर सकते हैं AJAX अनुरोध पोस्ट करें (यह दृश्यों के पीछे एक PHP फ़ाइल को कॉल करता है) और इसका उपयोग अपने PHP कोड को चलाने और जावास्क्रिप्ट पर वापस आने वाले किसी भी डेटा को वापस करने के लिए करें।

1

असल में, आप सर्वर-साइड (PHP) और क्लाइंट-साइड (जेएस) स्क्रिप्टिंग मिश्रण कर रहे हैं।

हालांकि यह संभव है - धन्यवाद उदाहरण के लिए। AJAX करने के लिए। क्योंकि तुम क्या आप वास्तव में सलेक्ट बॉक्स परिवर्तन के बाद किया जाना करने की आवश्यकता है के बारे में विशेष नहीं था, मैं सिर्फ तुम कुछ संसाधनों को इंगित और प्रस्ताव निम्न कर सकते हैं:

  • जानने के लिए और jQuery का उपयोग शुरू (jquery.com) - यह आपकी मदद करेगा आप क्रॉस-ब्राउज़र संगतता को शुरू और बनाए रखते हैं,
  • एजेक्स अनुरोधों को कैसे बनाना है (उदाहरण के लिए। onchange ईवेंट को निकाल दिया गया था, तो फ़ंक्शन में आप केवल फायरिंग कर रहे थे) - उदाहरण के लिए। .post() jQuery समारोह, का उपयोग कर
  • सीखना PHP से डेटा वापस कैसे (जैसे। PHP में json_encode() का उपयोग कर, लेकिन कच्चे एचटीएमएल भी ठीक है) और जे एस में इसका इस्तेमाल करते हैं,
1

ऐसा करने के कई तरीके हो सकते हैं । जिसे मैं पसंद करता हूं, MooToolsRequest ऑब्जेक्ट का उपयोग कर रहा है।

उदाहरण के लिए, आप एक स्क्रिप्ट ajaxCallable.php कहा जाता है, जो के माध्यम से $_REQUEST चर कुछ मानकों को प्राप्त करता है, तो आप (जावास्क्रिप्ट पक्ष में) कार्य करें:

function check_year_event(year_id, event_id) { 
    var year = document.getElementById(year_id).value; 
    var event = document.getElementById(event_id).value; 

    var myRequest = new Request({method: 'get', url: 'ajaxCallable.php'}); 
    myRequest.send('yearVar=' + year + '&eventVar=' + event); 
} 

फिर, अपनी ajaxCallable.php चर उपयोग करने में सक्षम हो जाएगा : $_REQUEST['yearVar'] और $_REQUEST['eventVar']

0

मैं एक परियोजना इस सप्ताह पर काम कर रहा था और लिए एक आसान तरीका के साथ आया था: वहाँ एक बुनियादी उदाहरण है एक ऑनक्लिक() से एक php स्क्रिप्ट कॉल करें। यह इस प्रकार चलता है।

मैं एक div "sidebarItem" कहा जाता है पर इस मामले में एक onclick() कॉल को परिभाषित ...

<a><div class="sidebarItem" onclick="populate('#content', 'help', 'open')">Click me for new content</div></a> 

तो मैं एक साधारण छोटे जे एस समारोह है कि लक्ष्य कंटेनर में एक बाहरी फ़ाइल को लोड करता है बनाया ...

function populate($container, $page, $item){ 
$($container).load('cyclorama/includes/populate.php?$page='+$page+'&$item='+$item);} 

फिर मैं एक छोटी सी php फ़ाइल लिखता हूं जो $ पृष्ठ और $ आइटम प्राप्त करता है, डेटाबेस से पूछताछ करता है और नई सामग्री देता है।

<?php 
$page = $_GET['$page']; 
$item = $_GET['$item']; 
$getContentQuery = "SELECT content FROM myTable WHERE page='".$page."' AND item='".$item."'"; 
$content = mysql_query($getContentQuery, $db); 
$myContent = mysql_fetch_assoc($content); 
echo $myContent['content'];?> 

PHP स्क्रिप्ट नई सामग्री echoes और यह कंटेनर में लोड हो गया है। मुझे लगता है कि यह बहुत से स्थान हैं जो यह सेवा दे सकता है। मुझे यह जानने में दिलचस्पी होगी कि ऐसा करने के लिए कोई स्पष्ट कारण नहीं है। यह AJAX सिर्फ जावास्क्रिप्ट और PHP का उपयोग नहीं करता है लेकिन यह तेज़ और अपेक्षाकृत आसान है।