Fynn
Fynn

Reputation: 208

How to call a javascript function from a different php file

I would like to call a javascript function (included inside a html file: index.html) from a php file (xyz.php). So, when i click on a link inside the xyz.php page, it will call the javascript function from index.html.

Something like:

echo '<a href="#" onclick="index.html.someFunction(e)"></a>';

It somehow needs to adress index.html, where the function is located.

EDIT:

Index.html

<html>
 <head>    
 </head>
 <body>
<button id="search_button" type="submit" value= "Search" onclick= "return getOutput()">Search</button>

<div id="output" style="width:395px; height:150px; overflow: auto; background = #969696" >    </div>
 </body>

 <script>    


    //THIS DISPLAYS THE CONTENT OF MY PHP PAGE INSIDE THE DIV FIELD
    function getOutput() {
      getRequest(
          "xyz.php?eingabe=123&eingabe2=File.csv", // URL for the PHP file
           drawOutput,  // handle successful request
           drawError    // handle error
      );
      return false;
    }
    function getOutput(link) {
      getRequest(
          link, // URL for the PHP file
           drawOutput,  // handle successful request
           drawError    // handle error
      );
      return false;
    }

    // handles drawing an error message
    function drawError() {
        var container = document.getElementById('wagoartikelnr2');
        container.innerHTML = 'Bummer: there was an error!';
}
    // handles the response, adds the html
    function drawOutput(responseText) {
        var container = document.getElementById('wagoartikelnr2');
        container.innerHTML = responseText;
            }
    // helper function for cross-browser request object
    function getRequest(url, success, error) {
        var req = false;
        try{
            // most browsers
            req = new XMLHttpRequest();
        } catch (e){
            // IE
            try{
                req = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e) {
                // try an older version
                try{
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                } catch(e) {
                    return false;
                }
            }
        }
        if (!req) return false;
        if (typeof success != 'function') success = function () {};
        if (typeof error!= 'function') error = function () {};
        req.onreadystatechange = function(){
            if(req.readyState == 4) {
                return req.status === 200 ? 
                    success(req.responseText) : error(req.status);
            }
        }
        req.open("GET", url, true);
        req.send(null);
        return req;
    }


 </script>
 </html>

XYZ.PHP

<html>
<?php

$vergleich = $_GET["eingabe"];
$datei = $_GET["eingabe2"]; 




 $temp2a = array("0.1.2.4", "0.1.2.3", "0.1.2.2");


for ($i = 0; $i < count($temp2a); $i++) {

                $URL = "xyz.php?eingabe=',temp2a[$i],'&eingabe2=',$datei,";
                echo '<a href=',temp2a[$i],' onClick= "index.html.getOutput($URL)"></a>';
            } 
?> 

<body>
</body>
</html>

Upvotes: 1

Views: 14050

Answers (2)

tkounenis
tkounenis

Reputation: 630

You can save the Javascript code in an external js file and include it in your html/php files via the script tag;

<script src="path/to/your/js/file.js"></script>

EDIT: Ok, first of all, you need to remove the overloaded getOutput(link) function altogether. This will make your call to xyz.php file point to the actual php file, otherwise it points to a file called undefined (since you don't provide the link parameter). Then, there is a typo in your xyz.php file in lines 16,17:

$URL = "xyz.php?eingabe=',temp2a[$i],'&eingabe2=',$datei,";
echo '<a href=',temp2a[$i],' onClick= "index.html.getOutput($URL)"></a>';

should be changed to this;

// Note the missing $ sign from your temp2a variables and the missing quotes from the anchor tag
$URL = "xyz.php?eingabe=',$temp2a[$i],'&eingabe2=',$datei,";
echo '<a href="',$temp2a[$i],'" onClick= "getOutput($URL)"></a>';</a>';

EDIT2: Found some other minor bugs in your files;

index.html:

<html>
 <head>
 </head>
 <body>
<button id="search_button" type="submit" value= "Search" onclick= "return getOutput()">Search</button>

<div id="wagoartikelnr2" style="width:395px; height:150px; overflow: auto; background = #969696" >    </div>

<script src="script.js"></script>
 </body>
 </html>

xyz.php:

<?php

$vergleich = $_GET["eingabe"];
$datei = $_GET["eingabe2"];
$temp2a = array("0.1.2.4", "0.1.2.3", "0.1.2.2");

for ($i = 0; $i < count($temp2a); $i++) {
    $URL = "xyz.php?eingabe=".$temp2a[$i]."&eingabe2=".$datei;
    echo '<p><a href="'.$temp2a[$i].'" onClick="getOutput("'.$URL.'")">link</a></p>';
}

?>

script.js:

    function getOutput(url) {
      url = url || "xyz.php?eingabe=123&eingabe2=File.csv";
      getRequest(
          url, // URL for the PHP file
           drawOutput,  // handle successful request
           drawError    // handle error
      );
      return false;
    }

    // handles drawing an error message
    function drawError() {
        var container = document.getElementById('wagoartikelnr2');
        container.innerHTML = 'Bummer: there was an error!';
}
    // handles the response, adds the html
    function drawOutput(responseText) {
        var container = document.getElementById('wagoartikelnr2');
        container.innerHTML = responseText;
            }
    // helper function for cross-browser request object
    function getRequest(url, success, error) {
        var req = false;
        try{
            // most browsers
            req = new XMLHttpRequest();
        } catch (e){
            // IE
            try{
                req = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e) {
                // try an older version
                try{
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                } catch(e) {
                    return false;
                }
            }
        }
        if (!req) return false;
        if (typeof success != 'function') success = function () {};
        if (typeof error!= 'function') error = function () {};
        req.onreadystatechange = function(){
            if(req.readyState == 4) {
                return req.status === 200 ?
                    success(req.responseText) : error(req.status);
            }
        }
        req.open("GET", url, true);
        req.send(null);
        return req;
    }

Upvotes: 3

siddhesh
siddhesh

Reputation: 563

use this code

<script type="text/javascript" src="path_to_ur_filename.js"></script> 

Upvotes: 0

Related Questions