2009-09-24 7 views
-1

J'ai un script PHP qui publie du JavaScript personnalisé basé sur le paramètre, avec le type d'en-tête text/javascript. Cette URL PHP est incluse dans le src d'un tag <script>. Cependant, il semble y avoir un problème, car le script semble être non fonctionnel. Comme dans, j'ai une alerte dans le script, qui devrait être exécutée immédiatement après l'inclusion, mais ce n'est pas le cas. Où vais-je mal?Publication PHP JavaScript

côté serveur PHP

<?php 
//Exploding the path after the file widget to get user details 
$expl = explode("/",$_SERVER['PATH_INFO']); 
$c=count($expl); 

//Handling the cases as widget/a widget//a etc 
switch($c) { 
    case 2: 
     if(empty($expl[0]) && !(empty($expl[1]))) pumpValid(); 
     else pumpInvalid(); 
     break; 
    case 3: 
     if(empty($expl[2]) && !(empty($expl[1])) && empty($expl[0])) pumpValid(); 
     else pumpInvalid(); 
     break; 
    default: 
     pumpInvalid(); 
     break; 
} 


function pumpValid() { 
    global $expl; 
    //Checking for a matching account in the urllist 
    include('embedUrl/urllist.php'); 
    if(isset($customerList[$expl[1]])) { 
     header("Content-Type: text/javascript"); 
     //Setting the host path for fetching the JS files later. As in stage or vidteq.com 
     echo "alert('h');"; 
     echo 'var _serverHostUrl="http://'.$_SERVER["SERVER_NAME"].eregi_replace('widget.*','',$_SERVER["REQUEST_URI"]).'";'; 
    } 
    else 
     pumpInvalid(); 
} 

function pumpInvalid() { 
    //Should redirect to error/home page 
    echo "Are You Nuts"; 
} 
?> 

function init() { 
    alert('hi');  
    addJSinHead('jquery-1.3.2.min.js'); 
    addJSinHead('OpenLayers.js'); 
    addJSinHead('json2.js'); 
    addJSinHead('dom-drag.js'); 
    addJSinHead('globals.js'); 
} 

function addJSinHead(fileName) { 
    var head=document.getElementsByTagName('head'); 
    var new=document.createElement('scrpit'); 
    new.src=_serverHostUrl+'/js'+fileName; 
    new.type='text/javascript'; 
    head.appendChild(new); 
} 

init(); 

inclusion dans le côté client HTML

<script src='http://rak/cvs/widget/cis/' type='text/javascript'></script> 

Répondre

1

L'alerte doit être exécutée à l'intérieur d'un bloc fonctionnel? Si c'est le cas, vous devez d'abord exécuter la fonction actuelle.

Essayez également de copier et coller l'url javascript src directement dans la barre d'adresse du navigateur.

Si ce qui précède n'a pas aidé, un code à analyser serait utile.

+0

L'alerte est en dehors de la fonction, elle doit donc être exécutée immédiatement. J'ai joint le code en question – Rakesh

0

Vous pouvez vérifier avec Firebug pour voir si la sortie du script est ce que vous attendez et que les en-têtes sont envoyés comme prévu.

Vous devrez fournir du code pour obtenir de l'aide.

EDIT: Je ne vois nulle part que vous l'en-tête de sortie en php:

header('Content-Type: text/javascript'); 

EDIT2: On dirait que vous appelez la fonction pumpValid avant qu'il ne soit défini.

+0

Salut, c'est là dans la fonction pumpValid. Je crois que j'ai la raison. Ai-je besoin de faire écho à chaque ligne de Javascript? Le laisser en dehors des balises PHP ne fonctionnera pas? – Rakesh