2017-02-19 3 views
-1

Принимаю входные данные из формы. Входы содержат простые арифметические операции, такие как 2 + 3. Насколько я могу сказать, ввод выполняется должным образом. Здесь chunk имеет небольшую часть ввода из поля ввода формы. Как вы можете видеть, когда alert (chuck) дает 2 + 3 (правильная вещь), но ответ, который я получаю после отправки «2 + 3» в calculate.php как параметр, составляет 2 3 (2 пробела 3). Мой calculate.php просто имеет что-то вроде echo $ _GET ['param'].XMLHttpRequest и PHP

У меня нет большого опыта по этой теме. В чем проблема?

chunk = theInput.substring(0,3); 
alert(chunk); //output is 2+3 
document.getElementById("txtHint3").innerHTML = chunk;//output is 2+3 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function(){ 
if (this.readyState == 4 && this.status == 200) { 
    var response = this.responseText; 
    alert(response); // But here output is 2 3 
    document.getElementById("txtHint223").innerHTML = response; // And same here is 2 3    
     } 
}; 
xmlhttp.open("GET", "calculate.php?param="+chunk,true); 
xmlhttp.send(); 
+0

Вы должны использовать фреймворк, такой как jQuery, вместо того, чтобы пытаться сделать это вручную. Ваш код вряд ли будет работать со всеми браузерами. – miken32

+0

Возможно, также было полезно увидеть ваш PHP-код, поскольку он делает большую часть работы здесь – RiggsFolly

ответ

1

+ представляет собой пробел в строке запроса. Используйте encodeURIComponent() для правильного кодирования значения:

xmlhttp.open("GET", "calculate.php?param="+encodeURIComponent(chunk),true); 
+0

Спасибо ... Это работает сейчас ... Можете ли вы дать мне небольшое объяснение, почему это необходимо? – Smizz

+0

Поскольку строка запроса использует процентное кодирование. Некоторые символы имеют особое значение (например, '+'). https://en.wikipedia.org/wiki/Query_string#URL_encoding – ShiraNai7