2016-07-01 4 views
0

Я искал ответ на этот вопрос в течение нескольких дней, но если я пропустил ответ в другом сообщении, сообщите мне.

Я пытаюсь попасть в Ajax, поэтому у меня есть очень простая форма в моем index.php, с отдельной PHP и файлами JavaScript:

index.php

<div id="ajax-test"> 
    <form action="ajax/ajax.php" method="POST"> 
     <textarea name="someText" id="some-text" placeholder="Type something here"></textarea> 
      <button type="button" onclick="loadDoc()">Submit</button> 
    </form> 
    <div id="ajax-text"></div> 
</div> 

main.js :

function getXMLHttpRequestObject() { 
    var temp = null; 

    if(window.XMLHttpRequest) 
     temp = new XMLHttpRequest(); 
    else if(window.ActiveXObject) // used for older versions of IE 
     temp = new ActiveXObject('MSXML2.XMLHTTP.3.0'); 

    return temp; 
}// end getXMLHttpRequestObject() 


function loadDoc() { 
    var ajax = getXMLHttpRequestObject(); 

    ajax.onreadystatechange = function() { 
     if(ajax.readyState == 4 && ajax.status == 200) { 
      document.getElementById('ajax-text').innerHTML = ajax.responseText; 
      console.log(ajax.responseText); 
     } 
    }; 

    ajax.open("POST", "ajax/ajax.php", true); 
    ajax.send(); 
} 

ajax.php:

<?php 

print_r('\'' . $_POST['someText'] . '\' is what you wrote'); 

?> 

Всякий раз, когда я пытаюсь распечатать, он печатает: «« Это то, что вы написали »- что мне не хватает/не делает/делает неправильно, что не позволяет мне получить доступ к содержимому someText? Я изменил свое соглашение об именах, заменил одну цитату на двойную кавычку, попробовал GET вместо POST, но ничего не получилось.

+2

Не нужно установить данные при вызове [отправить() ] (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send)? – FirstOne

+0

Вы смотрели запрос/ответ AJAX в инструментах разработчика браузера? Есть ли сообщения об ошибках? Вы используете это на веб-сервере? –

+0

Наряду с тем, что @FirstOne сказал, что вам нужно будет захватить данные, которые нужно отправить, когда вы вызываете 'loadDoc()' –

ответ

0

Это, вероятно: Из-за ошибки

Undefined index: someText in C:\xampp\htdocs\ssms\sandbox\ajax\ajax.php on line 3 

У вас было несколько проблем с вашим кодом, который я не имею времени, чтобы перечислить сейчас. Это должно работать нормально, плюс я использовал функцию onkeyup() для отображения текста в реальном времени, даже не нажимая кнопку отправки.

Индекс файла

<div id="ajax-test"> 
<form method="POST" onsubmit="return false;"> 
    <textarea onkeyup="loadDoc()" name="someText" id="someText" placeholder="Type something here"></textarea> 
     <button type="button" onclick="loadDoc()">Submit</button> 
</form> 
<div id="ajax-text"></div> 
</div> 
<script type="text/javascript" src="main.js"></script> 

Главная Javascript файл

function _(x) { 
    return document.getElementById(x); 
} 
function ajaxObj (meth, url) { 
    var x = new XMLHttpRequest(); 
    x.open(meth, url, true); 
    x.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    return x; 
} 
function ajaxReturn(x){ 
    if(x.readyState == 4 && x.status == 200) { 
     return true; 
    } 
} 
function loadDoc() { 
    var someText = _("someText").value; 
    var ajax = ajaxObj("POST", "ajax/ajax.php"); 

    ajax.onreadystatechange = function() { 
     if(ajaxReturn(ajax) == true) { 
      _('ajax-text').innerHTML = ajax.responseText; 
      console.log(ajax.responseText); 
     } 
    } 
    ajax.send("someText="+someText); 
} 

РНР AJAX Файл

if(isset($_POST['someText'])){ 
    $someText = $_POST['someText']; 
    echo "\"$someText\"" . ' is what you wrote'; 
    exit(); 
} else { 
    echo "An error occured"; 
    exit(); 
} 
+0

@DrewAdams. Ваш файл Main.js не отправил правильный запрос, а ваш код Main.js был немного беспорядочным, а в вашем файле index.php вы установили идентификатор вашего текстового поля в «некоторый текст», а вы искали «someText» в ajax.php – DanielTheGeek

1

Вы можете попытаться задать запрос заголовка, а также поместить данные внутри отправки. Вот пример, как как

as-
ajax.open("POST", "ajax/ajax.php", true); 
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
ajax.send("someText="+document.getElementById('some-text').value); 
+0

Это сработало! Это сгенерированный тег ap ниже моего div ajax-text с помощью «someText» - можете ли вы помочь мне понять, почему это сгенерирован? –

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