Probleem in javascript bij toekken waarde uit PHP

Status
Niet open voor verdere reacties.

gibsonneke

Gebruiker
Lid geworden
19 mei 2009
Berichten
33
Beste mensen,

Ik ben pas nieuw hier maar heb al reeds een vraag.

Ik ben bezig met een applicatie omtrent digital signage en daarin haal ik op een bepaald ogenblik een waarde uit een PHP variabele en steek die in een javascript variabele.

Dit lukt maar toch krijg ik een foutbericht (wat irritant is, iedereen wil natuurlijk dat zijn applicatie valid is)

Foutbericht is: "unterminated string literal"
output aan kant van cliënt is: var error "<br/>

Hier is er inderdaad een fout (quote die er niet staat maar wel zou moeten staan). Echter vind ik maar geen oplossing omdat het geheel serverside gebeurd (PHP variabele in javascript variabele)

code in php bestand: var error = "<?php echo($_SESSION['error']); ?>";

Iemand die een oplossing weet voor dit probleem?
 
Staan er toevallig quotes o.i.d. in $_SESSION[ 'error' ] ?
 
Als er een numerieke waarde wordt ingegeven, kan er toch nooit:

HTML:
var error = "<br/>

worden geoutput? Wat ik lees na wat zoeken op google, is dat je waarschijnlijk een multiline string echood. Kun je eens de volledige bron (PHP en de HTML output) posten van de pagina waar het om gaat?
 
Als er een numerieke waarde wordt ingegeven, kan er toch nooit:

HTML:
var error = "<br/>

worden geoutput? Wat ik lees na wat zoeken op google, is dat je waarschijnlijk een multiline string echood. Kun je eens de volledige bron (PHP en de HTML output) posten van de pagina waar het om gaat?

Ja tuurlijk

de bron van PHP pagina:
PHP:
<?php require_once("../includes/initialize_manager.inc"); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<link href="../stylesheets/style_add_libraryitem_presentation.css" rel="stylesheet" type="text/css" media="screen" />

</head>
<body>

<?php

 $images = array();
 global $upload;
 
 if((isset($_GET['action'])) && ($_GET['action'] == "delete") && (isset($_GET['image']))){
   $_SESSION['error'] = "";
   $images = $_SESSION['images'];
   $image = $_GET['image'];
   $temp_array = array();
   
   for($i = 0; $i < count($images); $i++){
    if($images[$i] != $image){
     array_push($temp_array, $images[$i]);
    }
    else{
     unlink(SITE_ROOT.DS.$upload_dir.DS.$image);
    }
   }
    
    $_SESSION['images'] = $temp_array;
  }
     
     if(isset($_SESSION['images']) && (count($_SESSION['images']) != 0)){
      $images = $_SESSION['images'];
     
         echo("<table class=\"table_datagrid\" id=\"table_datagrid_presentation_details_library\">");
          echo("<thead>");
                  echo("<tr>");
                      echo("<th scope=\"col\">View</th>");
                      echo("<th scope=\"col\">Delete</th>");
                      echo("<th scope=\"col\">Name</th>");
                  echo("</tr>");
          echo("</thead>");
          echo("<tbody>");
      for($i = 0; $i < count($images); $i++){
       echo("<tr>");
        echo("<td><a href=\"\" id=\"preview\" onclick=\"window.open('../upload/{$images[$i]}','Preview','scrollbars=0, menubar=0, directories=0, resizable=1, location=0, status=0, width=640, height=480'); return false\"><img id=\"preview\" src=\"../images/page_preview.png\" /></a></td>");
        echo("<td><a href=\"upload_manager.php?action=delete&image={$images[$i]}\" id=\"delete\"><img id=\"delete\" src=\"../images/delete.png\" /></a></td>");
        echo("<td>" . $images[$i] . "</td>");
       echo("</tr>");
      }
       echo("</tbody>");
                                    
       echo("<tfoot>");
       echo("<tr>");
        echo("<td colspan=\"6\">");
        echo("</td>");
        echo("</tr>");
       echo("</tfoot>");
     echo("</table>");
     
     }
    
?>
     
<script language="javascript">
 var error = "<?php echo($_SESSION['error']); ?>";
 
 switch (error){
  case "0":
   var filename_already_existing_file = "<?php echo($_SESSION['filename_already_existing_file']); ?>";
   alert("The image with filename '" + filename_already_existing_file + "' already exists. Please edit the filename.");
  break;
  case "1":
   alert("The image you are trying to add is too large. Images can't exceed a file size of 5MB (5000KB).")
  break;
  case "2":
   alert("The image you are trying to add is too large. Images can't exceed a file size of 5MB (5000KB).")
  break;
  case "3":
   alert("The image was only partially uploaded. Please try again to completely upload the image.")
  break;
  case "4":
   alert("There occured an error while uploading the file. Please try again.")
  break;
  case "5":
   alert("There occured an error while uploading the file. Please try again.")
  break;
  case "6":
   alert("There occured an error while uploading the file. Please try again.")
  break;
  case "10":
   var filename_already_existing_file = "<?php echo($_SESSION['filename_already_existing_file']); ?>";
   alert("The image with filename '" + filename_already_existing_file + "' is already added in the list.");
  break;
 } 
</script>

</body>
</html>
De bron van html:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Televic Signage | Manager</title>
<link href="../stylesheets/style.css" rel="stylesheet" type="text/css" media="screen" />
<link href="../stylesheets/style_calendar.css" rel="stylesheet" type="text/css" media="screen" />
<link href="../images/televic_icon.ico" rel="shortcut icon"/>
<script type='text/javascript' src="../javascripts/menu.js"></script>
<script type='text/javascript' src="../javascripts/application.js"></script>
<script type='text/javascript' src="../javascripts/image_upload.js"></script>

<script type='text/javascript' src="../javascripts/jquery-1.2.6.min.js"></script>
<script type='text/javascript' src="../javascripts/date.js"></script>
<!--[if IE]><script type='text/javascript' src="../javascripts/jquery.bgiframe.js"></script><![endif]-->
<script type='text/javascript' src="../javascripts/jquery.datePicker.js"></script>
</head>

<body onload="focus_name_newlibraryitem()">

<div id="header">

	<div id="header_inner" class="fluid">
    	
		<div id="header_no_repeat" class="fluid">        </div>

        
	</div>
	
</div>
<div id="menu">
	<ul id="qm0" class="qmmc">
		<li><a title="View the possible actions" href="index.php?page=dashboard">Dashboard</a>
        </li>
        
        <li><a title="Plan the presentations"  href="index.php?page=schedule">Schedule</a>
        </li>

	
	<li><a title="Make a presentation"  href="index.php?page=presentation">Presentation</a>
        </li>

	<li><a title="Add the content"  href="index.php?page=library">Library</a>
        </li>
	
	<li><a title="View the management actions" href="index.php?page=management">Management</a><script type="text/javascript">document.write('<ul>');document.write('<li><a title="Manage the users" href="index.php?page=users">Users</a></li>');document.write('<li><a title="Manage the locations" href="index.php?page=locations">Locations</a></li>');document.write('<li><a title="View the logs" href="index.php?page=logs">Logs</a></li>');document.write('<li><a title="View the settings" href="index.php?page=settings">Settings</a></li>');document.write('<li><a title="View the license information" href="index.php?page=license">License</a></li>');document.write('</ul>');</script></li>	
	<li><a title="Log out"  href="index.php?page=logout">Logout</a>

        </li>
	
	<li class="clear">&nbsp;</li></ul>
	
	<div id="user_information">
		<div class="message" id="notification_message">
								</div>
		<div id="message_login_text">Welcome back Admin</div>
	</div>

	<script type="text/javascript">qm_create(0,false,0,500,false,true,true,true,false);</script>

</div>
<div id="page">
	


<div id="content" class="section">
    <div class="post">
        <h2 class="title">Library</h2>
    </div>
    
    <div class="post">
        <h3 class="title">Add new item to the library</h3>
    </div>

    <p>
			    
	<form action="index.php?page=newlibraryitem" method="post">
	<p>
	    <fieldset>  
	    <legend>Item Details</legend>  
		    <ol>  
                        <li>  
                                <label for="name">Name:</label><input type="text" onfocus="default_layout(this)"  name="name" maxlength="30" value="" id="name" class="textfield" />
                        </li>

                        <li>  
                                <label for="librarytype">Type:</label>
                                <select name="librarytype" class="list">
                                <option value="1">Text</option><option value="2" selected>Image</option><option value="3">Video</option>	
                                </select>
                        </li>  
		    </ol> 
	    </fieldset>
	</p>

	    
	<p>
	    <fieldset id="controls">  
	    <legend>Controls</legend>  
		    <ol>  
			    <li>  
				    <input type="submit" name="submit" value="Add Content" id="submit" class="button" /><button name="cancel" id="cancel" class="button">Cancel</button>
			    </li>
		    </ol> 
	    </fieldset>
	</p>

	
	</form>
	
        <br/>
    </p>
    
    	<p>
	<form action="index.php?page=newlibraryitem" enctype="multipart/form-data" method="POST" target="uploadmanager">
	    <fieldset id="form_upload_manager">  
	    <legend>Content Details</legend>  
		    <ol>
			    <li>  
				<label for="file">Image to upload:</label>

				<input type="hidden" name="MAX_FILE_SIZE" value="4500000" />
				<input type="file" name="file_upload" onChange="jsUpload(this)" onfocus="default_layout_uploadmanager()"/>
				<input type="submit" name="upload" value="Upload" class="button" id="upload" />
			    </li>
                            
                            <li>
                                <iframe  scrolling="auto" name="uploadmanager" id="uploadmanager" src="upload_manager.php" width="100%" height="300">
					<p>Your browser does not support iframes.</p>
				</iframe>
                            </li>
		    </ol> 
	    </fieldset>

	    </form>
	</p>
    
    <br class="clear" />
</div>

    
	<div style="clear: both;">&nbsp;</div>
</div>


<div id="footer">
	<p>&copy;2009 All Rights Reserved. &nbsp;&bull;&nbsp; Televic</p>

</div>
</body>
</html>
 
Laatst bewerkt door een moderator:
Weet je zeker dat die HTML de output is van die PHP code? Het komt namelijk totaal niet overeen.

De header in je PHP:

HTML:
<head>

<link href="../stylesheets/style_add_libraryitem_presentation.css" rel="stylesheet" type="text/css" media="screen" />

</head>

De header in je HTML:

HTML:
<head>
<title>Televic Signage | Manager</title>
<link href="../stylesheets/style.css" rel="stylesheet" type="text/css" media="screen" />
<link href="../stylesheets/style_calendar.css" rel="stylesheet" type="text/css" media="screen" />
<link href="../images/televic_icon.ico" rel="shortcut icon"/>
<script type='text/javascript' src="../javascripts/menu.js"></script>
<script type='text/javascript' src="../javascripts/application.js"></script>
<script type='text/javascript' src="../javascripts/image_upload.js"></script>

<script type='text/javascript' src="../javascripts/jquery-1.2.6.min.js"></script>
<script type='text/javascript' src="../javascripts/date.js"></script>
<!--[if IE]><script type='text/javascript' src="../javascripts/jquery.bgiframe.js"></script><![endif]-->
<script type='text/javascript' src="../javascripts/jquery.datePicker.js"></script>
</head>

EDIT: en wil je de volgende keer je code tussen
Code:
 / [HTML] of [PHP] tags hier plakken. Dat houdt het wat overzichtelijker.
 
Als er een numerieke waarde wordt ingegeven, kan er toch nooit:
HTML:
var error = "<br/>
worden geoutput?
Ik meen dat een error in php altijd voorafgegaan wordt met een <br />, dus de string zal de error message wel bevatten, maar kan niets na de \n laten zien.

Probeer het anders eens met enkele quotes:
HTML:
<script language="javascript">
var error = '<?php echo($_SESSION['error']); ?>';
also, weet je zeker dat $_SESSION['error'] bestaat/werkt/aanroepbaar is?
 
Ik meen dat een error in php altijd voorafgegaan wordt met een <br />, dus de string zal de error message wel bevatten, maar kan niets na de \n laten zien.

Probeer het anders eens met enkele quotes:
HTML:
<script language="javascript">
var error = '<?php echo($_SESSION['error']); ?>';
also, weet je zeker dat $_SESSION['error'] bestaat/werkt/aanroepbaar is?

$_SESSION['error'] werkt zeker want indien er een foutcode optreed wordt dit doorgegeven en krijg ik na de switch case ook het foutbericht te zien.

Met enkele quotes werkt het jammer genoeg ook niet. :(
 
$_SESSION['error'] werkt zeker want indien er een foutcode optreed wordt dit doorgegeven en krijg ik na de switch case ook het foutbericht te zien.

Met enkele quotes werkt het jammer genoeg ook niet. :(

Ondertussen heb ik de fout weggekregen.

De oplossing was om een isset toe te voegen. (indien er geen waarde ingevuld werd was er een lege string)

Daarna moest alles vanuit php geschreven worden.

Zo dus:
PHP:
     if(isset($_SESSION['error_libraryitem_add'])){
      echo("<script language=\"javascript\">");
        echo("var error='" . ($_SESSION['error_libraryitem_add']) . "';");
         echo("switch (error){");
          echo("case \"10\":");
           echo("var libraryitem_already_exist='" . ($_SESSION['libraryitem_already_exist']). "';");
           echo("alert(\"Library item '\" + libraryitem_already_exist + \"' is already added in the list.\");");
           echo("break;");
          echo("}");
      echo("</script>");
Bedankt aan de persoon die me geholpen heeft. Deze mag dus dicht. :)
 
Laatst bewerkt:
digital signage

tsja daar ok wel vaker problemen mee gehad. soms loont het om het te laten doen, die * knip *
 
Laatst bewerkt door een moderator:
post is bejaard en over de datum.
Daarom voorzien van een slot.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan