1

私は html フォームを持っています。ユーザーがファイルを選択して送信すると、php ドキュメントの $_FILES はそれを受け取りません。主な焦点はフォームです。送信を押してもファイルは送信されませんが、onclick イベントが発生します。エラーメッセージはありません

    <form id="artist_post" enctype="multipart/form-data" method="post" onsubmit="return " action="php_parsers/newsfeed_system.php">
<textarea id="statustext" onkeyup="statusMax(this,250)"></textarea>
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input id="audioUpload" type="file" name="audioUpload" accept="audio/*" />
<input type="submit" value="Post" id="statusBtn" onclick="postToStatus('status_post','a','statustext')"/>
</form>

これがphpドキュメントです。ファイルがアップロードされているかどうかを確認しようとしています

    if (isset($_FILES["audioUpload"]["name"])) {
        echo "flag1";
    }
    if ($_FILES["audioUpload"]["tmp_name"] != "") {
        echo "flag2";
    }

JavaScript はフォームから情報を取得し、それを ajax 経由で php に送信します。

function postToStatus(action,type,ta){
var data = _(ta).value;
if(data == ""){
    alert("Type something first");
    return false;
}

// Checks to see if user uploaded a file to send with post 
if(_("audioUpload").value != "") { 
    type = "c";
}   

_("statusBtn").disabled = true;
var ajax = ajaxObj("POST", "php_parsers/newsfeed_system.php");
ajax.onreadystatechange = function() {
    if(ajaxReturn(ajax) == true) {
        //Pull some info from whatever the php doc returns
    }
}

ajax.send("action="+action+"&type="+type+"&data="+data);
}
function ajaxObj(meth, url) {
var x = new XMLHttpRequest();  // create new http request 
x.open( meth, url, true );  // open request and pass it a method and a url to post it to 
x.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
return x;
}
// Modular function that externalizes readyState and status check
function ajaxReturn(x) {
if(x.readyState == 4 && x.status == 200) {
    return true;
    }
}
4

1 に答える 1

0

あなたの<form action="...">ニーズを削除する必要があります。AJAX を使用しているため、フォーム アクション シーケンスをすべてバイパスしています。サーバーにこれのレプリカを作成しましたが、それがなくても機能します。

ときどき JSFiddle に入れ、上部の「Tidy」ボタンを押すことをお勧めします。それ以外の場合は、これまでのコードでうまくいきました。

私の複製コピーの動作を見たい場合は、 ここをクリックしてください。

于 2013-10-26T09:40:13.513 に答える