2017-12-25 17 views
-1

私の問題を助けてくれることを願っています。FormData AjaxがPHPでデータを投稿していない

問題は、私はFormDataに私のdata置くが、私はechoを使用してPHPファイルでそれらを呼んでいるときは値とデータが既存のない存在であるということであると私にerror

undefined variable

います

しかし、var_dump()またはprint_r()を使用している場合は、valuesがすべて表示されます。また、画像のファイルをとすると、それは私にも送信されます。errorhtmlでここ

:ここ

<form id="form" action="myurl.php" method="post" enctype="multipart/form-data" onsubmit="return false"> 
    <input type="file" name="image" accept="image/*"/> 
    <input type="text" name="description"/> 
    <input type="submit" /> 
</form> 

ajaxで私のコードです:私のmyurl.phpのphpファイルで今

function getName(key) 
{ 
    key = document.getElementsByName(key)[0]; 
    return key; 
} 
function getId(key) 
{ 
    key = document.getElementById(key); 
    return key; 
} 

var url = getId('form').getAttribute('action'); 
var datas = new FormData(); 
var xhr = new XMLHttpRequest(); 

var image = getName('image').value.trim(); 
var description = getName('description').value.trim(); 

datas.append('file_image', image.files[0]); 
datas.append('description', description); 

xhr.open('POST', url, true); 
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
xhr.send(datas); 

xhr.onreadystatechange = function() 
{ 
    var OK = 4; 
    var DONE = 200; 

    if(xhr.readyState == 4 && xhr.status == DONE) 
    { 
     alert(xhr.responseText); 
    } 
} 

var_dump($_POST); 
var_dump($_FILES); 

私たちが実際に第三者を使用していませんscriptjQueryです。ネイティブjavascriptの言語を実践しています。

ありがとうございます。

+0

チェック、https://plainjs.com/javascript/ajax/send-ajax-get-and-postで

フォームの名前を付けname="upload-image

<form id="form" action="myurl.php" name="upload-image" method="post" enctype="multipart/form-data"> <input type="file" name="image" accept="image/*"/> <input type="text" name="description"/> <input type="submit" /> </form> 

-requests-47/ –

+0

HTMLファイル入力、 "datas.append(" file_image "、fileInputElement.files [0]);" –

+0

@BhupeshKushwaha私はすでにそれをしましたが、私はvar_dumpファイルを使用しているときには値はありませんでしたが、ポストには画像が一時的に存在する場所の値が1つありました。 –

答えて

0

要素を手動で追加してフォームデータからFormDataを作成する必要はありません。そこにあなたのJavascript

var form = document.forms.namedItem("upload-image"); 
var url = form['action']; 
form.addEventListener('submit', function(ev) { 

    var oData = new FormData(form); 

    var oReq = new XMLHttpRequest(); 
    oReq.open("POST", url, true); 
    oReq.onload = function(oEvent) { 
     if (oReq.status == 200) { 
      alert(oReq.responseText); 
     } else { 
      alert(oReq.status + " occurred when trying to upload your file."); 
     } 
    }; 

    oReq.send(oData); 
    ev.preventDefault(); 
}, false); 
+0

addEventListenerは私にエラー 'null'を返します –

+0

フォームに名前を付けましたか? – julekgwa

+0

はい、私はここにすべてを追いました。 –

関連する問題