2016-04-05 2 views
1

Я пытаюсь передать строку в javascript из PHP, но я терпеть неудачу. От тестирования я вижу, что это пробел, из-за которого мой тест терпит неудачу. Как кодировать, чтобы перейти к javascript правильно Я пробовал% 20, и еще несколько ничего не работают.Передача строки PHP в Javascript Spaces

Полный Источник

<script async src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script type="text/javascript"> 

function DemoOne(text) { 
$('#PageView').load('test.php?text=' + text); 
} 
</script> 


<?php 
$message="hello"; 

echo " <a href=\"javascript:DemoOne('$message');\" ><input class='btn' type='button' value='Test'></a>  
<div id='PageView'></div>"; 

?> 

Test Output test.php

<?php 
echo $_GET['text']; 
?>  

РАЗВЕЙТЕ

Добавление кода ниже по-прежнему не кажется, только удаление пространства допущу выше пример работы.

a href=\"javascript:DemoOne(".htmlspecialchars(json_encode($message)).");\" ><input type='button' value='Submit'></a> 
<div id='PageView'></div> 
+1

Возможный дубликат [Передать PHP строку в переменную JavaScript (и побег newlines)] (http://stackoverflow.com/questions/168214/pass-a-php-string-to-a-javascript-variable-and-escape-newlines) –

ответ

2

Это не имеет ничего общего с пробелами. И вы не дали нам полный код. Я предполагаю, что HTML внутри эха? Если да, то вам нужно сделать, это:

echo "<a href=\"javascript:DemoOne(".htmlspecialchars(json_encode($message)).");\" ><input type='button' value='Submit'></a> 
<div id='PageView'></div>"; 

т.е. json_encode любые данные, которые ваш пропуск в JavaScript. Вам также нужно избегать его для HTML, поскольку он имеет атрибут, а не тег <script>.


Вам также необходимо избегать параметра запроса для URL-адреса.

Я изменен код для устранения проблем кодирования:

<script async src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script type="text/javascript"> 

function DemoOne(text) { 
$('#PageView').load('test.php?text=' + encodeURIComponent(text)); 
} 
</script> 


<?php 
$message="hello"; 

echo " <a href=\"javascript:DemoOne(".htmlspecialchars(json_encode($message)).");\" ><input class='btn' type='button' value='Test'></a>  
<div id='PageView'></div>"; 

С другой стороны, пусть JQuery сделать вытекание:

function DemoOne(text) { 
$('#PageView').load('test.php', {text:text}); 
} 
+0

Спасибо за помощь. Я добавил выше, чтобы добавить полный источник Однако код все равно не работает. Если я сделаю $ message = "hello" (без пробелов будет работать нормально) любые другие идеи, в которых я ошибаюсь? –

+0

@CliveAtkins Это далеко не полный код. Как вы выводите этот HTML-код? Вставьте весь файл .php, если вы не уверены. – mpen

+0

@CliveAtkins Ах ... ладно, вам также нужно избежать параметра URL. Вы можете сделать это в JS с помощью [encodeURIComponent] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent). Я добавил полный пример к моему ответу. – mpen

Смежные вопросы