2016-07-01 25 views
0

Ich habe seit einigen Tagen nach einer Antwort gesucht, aber wenn ich die Antwort in einem anderen Post verpasst habe, lassen Sie es mich wissen.

Ich versuche, in Ajax zu bekommen, so dass ich eine sehr einfache Form in meinem index.php, mit separaten PHP und Javascript-Dateien:

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'); 

?> 

Immer wenn ich versuche zu drucken, wird Folgendes gedruckt: "'' ist was du geschrieben hast" - was vermisse ich/mache ich nicht/tue es nicht, dass ich nicht auf den Inhalt von someText zugreifen kann? Ich habe meine Benennungskonvention geändert, vom einfachen Anführungszeichen in das doppelte Anführungszeichen getauscht, habe GET anstelle von POST versucht, aber nichts hat funktioniert.

+2

Sie tun, Datei-Datei nicht benötigen die Daten zu setzen, wenn Aufruf von [send() ] (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send)? – FirstOne

+0

Haben Sie die AJAX-Anfrage/-Antwort in den Browser-Entwicklertools gesehen? Werden Fehler gemeldet? Laufen Sie das auf einem Webserver? –

+0

Zusammen mit dem, was @FirstOne sagte, müssen Sie die zu sendenden Daten erfassen, wenn Sie 'loadDoc() aufrufen' –

Antwort

0

Dies ist wahrscheinlich beacuse des Fehlers

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

Sie hatten ein paar Probleme mit dem Code, den ich habe keine Zeit, jetzt zur Liste aus. Dies sollte gut funktionieren, und ich habe die onkeyup() -Funktion verwendet, um den Text live anzuzeigen, ohne auf den Absenden-Button zu klicken.

Der Index-Datei

<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> 

Die Haupt 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); 
} 

Die PHP AJAX

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

@DrewAdams Ihre Main.js-Datei wurde keine ordnungsgemäße Anfrage senden und Ihr Main.js-Code war ein bisschen chaotisch, und in Ihrer index.php-Datei setzen Sie die ID Ihrer Textarea auf "Some-Text" während Du hast nach 'someText' in ajax.php gesucht – DanielTheGeek

1

Sie können versuchen, eine Header-Anforderung festzulegen und die Daten auch innerhalb des Sendevorgangs zu speichern. Hier ist ein Beispiel, wie wie 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

Dies funktionierte! Es ist ein Ap-Tag unterhalb meiner Ajax-Text Div mit "someText" generiert - können Sie mir helfen, warum das ist generiert werden? –

Verwandte Themen