ホームページ  >  記事  >  バックエンド開発  >  Windows で jquery+ajax+php ファイルをアップロードすると、Linux では問題が発生します。

Windows で jquery+ajax+php ファイルをアップロードすると、Linux では問題が発生します。

WBOY
WBOYオリジナル
2016-06-23 14:02:121054ブラウズ

Windows、linux+nginx+php+mysql での jquery+ajax+php ファイルのアップロードに問題があります... ファイル パスを選択した後にポップアップ表示されない js 検出サフィックスがあり、送信後にアクセスできません. 何も受け入れられません ...wnmp の下に書き込まれます。


ディスカッションに返信(解決策)

あなたが提供した情報は本当に少なすぎます

Windows、linux+nginx+php+mysqlでのjquery+ajax+phpファイルのアップロードに問題があります...はいファイル パスを選択すると、js 検出サフィックスが表示されなくなり、送信後はアクセスできず、何も受信できません。wnmp の下に書き込まれます。 ...
php

<?php		/******************************************	ajax上传入口	******************************************/?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>导入程序</title><link href="styles/general.css" rel="stylesheet" type="text/css" /><link href="styles/main.css" rel="stylesheet" type="text/css" /><!--<link href="ajaxfileupload.css" type="text/css" rel="stylesheet">--><script type="text/javascript" src="Excel/jquery.js"></script><script type="text/javascript" src="Excel/ajaxfileupload.js"></script><script type="text/javascript">	function ajaxFileUpload()	{		var f_content = form.fileToUpload.value; 		var fileext=f_content.substring(f_content.lastIndexOf("."),f_content.length) 			fileext=fileext.toLowerCase() 		if(fileext == '')		{			alert('先选择文件');			return false;		}		if (fileext!='.csv') 		{ 			 alert("导入的文件,必须csv格式,重新选择!");    			 return false; 		}		$("#loading")		.ajaxStart(function(){			$(this).show();		})		.ajaxComplete(function(){			$(this).hide();		});		$.ajaxFileUpload		(			{				url:'buy_clothes_day_insert.php',				secureuri:false,				fileElementId:'fileToUpload',				dataType: 'json',				data:{name:'logan', id:'id'},				success: function (data, status)				{					if(typeof(data.error) != 'undefined')					{						/*						if(data.error != '')						{							alert(data.error);						}						else						{								alert(data.msg);						}*/						//50条插入完						if(data.msg == 1)						{							repeat_do_ajax();						}else if(data.msg == 2){							alert('无数据');						}					}				},				error: function (data, status, e)				{					//第一次post失败					alert(e);				}			}		)		return false;	}		function repeat_do_ajax()	{		$.ajax({			//url:"doajaxfileupload.php",			url:"buy_clothes_day_insert.php",			type:"GET",			dataType: 'json',			data:{act:'input'},			success:function(data, status)			{					//还有数组重复ajax				if(data.msg == 1){					//setInterval(repeat_do_ajax,1000);					repeat_do_ajax();				}else if(data.msg == 0){					alert('成功导入本次所有数据!');				}							},			error:function(data, status)			{				//防止数据库超时30后在继续				if(status == 'parsererror' || data.error == 'undefined')					repeat_do_ajax();				//setInterval(repeat_do_ajax,3000);			}		})		}</script>	</head><body><div id="wrapper">    <div id="content">    	<h2>导入程序</h2>    	    			<img id="loading" src="Excel/loading.gif" style="display:none;">		<form name="form" action="" method="POST" enctype="multipart/form-data">			<table cellpadding="0" cellspacing="0" class="tableForm" height="80">			<thead>				<tr>					<th>选择csv文件</th>				</tr>			</thead>			<tbody>					<tr>					<td><input id="fileToUpload" type="file" size="45" name="fileToUpload" class="input"></td>				</tr>			</tbody>				<tfoot>					<tr>						<td><button class="button" id="buttonUpload" onclick="return ajaxFileUpload();">执行</button></td>					</tr>				</tfoot>		</table>				</form>    	    </div></div>    </body></html>


jsコードが実行されたことを確認できますか?

jsコードが実行されたことを確認できますか?
js メソッドの外側でアラートが実行される可能性があります。js が未定義であることを確認しましたが、大文字と小文字が区別されていると思いました。まだ問題は見つかりませんでした。
私の長年の経験に基づいて、私はそう判断します。 JS の問題です。
2 つのプラットフォームのブラウザは一致していますか?
var f_content = form.fileToUpload.value;
このフォームは直接使用できますか?それから、JS の問題なのか PHP の問題なのかを調べています。

JS 判定をキャンセルして試してください。 ajax トリガーアラート (1) ajax 実行成功リターンアラート (2)


この問題は個別にテストすることで解決できます


ケースの問題である可能性が非常に高いです

個別にテストを完了します:
1、js がフォーム オブジェクトを正常に取得したかどうかを確認します
2. 送信結果のフィードバックを確認します。フォームにファイルを送信せず、POST データのみを送信し、PHP バックエンド POST グローバル配列の出力を判断するなど。
3. JS を削除した後にフォーム送信を使用し、成功したかどうかを確認します。 4. ファイルのアップロードを使用します。 JS を使用して成功したかどうかを確認します (Linux サーバー上の対応するディレクトリに書き込み権限があることを確認してください)

私の長年の経験に基づいて、これは JS の問題であると判断します
あなたは 2 を使用しています。各プラットフォームは同じですか?

var f_content = form.fileToUpload.value;

この省略形は問題があるように感じます

次に、それが JS の問題であるかどうかを調べています。 PHP の問題です。

JS 判定をキャンセルして、アップロードが成功したかどうかを確認してください。 ajax トリガーアラート(1) ajax 実行成功リターンアラート(...


この var f_content = form.fileToUpload.value; が変更されました
現在のエラーは次のとおりです: Uncaught SyntaxError: Unexpected end of input
Chrome IE にはそれがあります...

解決済み: 戻り値の json 型は特定のエラーを返さないため、js が jquery の値を変更した後でも問題はありません ( win では問題ありませんでした)。最終的には、ディメンションが対応するテーブルを作成できず、エラーが報告されたためであることがわかりました。テーブルを作成した後は、すべてが正常に進みました。ありがとうございます。みんな〜〜

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。