Pouria Polouk Ответов: 0

Проблема с возвращаемым значением из PHP в jquery (с помощью ajax-техники)


I wrote code below using PHP, mySQL and AJAX to form submission.
When the user wants to upload an image larger than 700*400, the alert message such as “the image size doesn't match” doesn’t show up. Why?


Что я уже пробовал:

JQuery Code

$("#addproduct").submit(function(event){	
	event.preventDefault();

	$.ajax({
		url: "admin.php", 
		type: "POST",             
		data: new FormData(this), 
		contentType: false,       
		cache: false,             
		processData:false,        
		success: function(data){ 
				var num=data.search("invalid_file");
				if(num!=-1)
					alert("the image size doesn't match...");
		}
	});
});



PHP Code

if($_SERVER['REQUEST_METHOD']=="POST" && isset($_POST['tahahiddenadd'])){
	
	$pName=$_POST['tahaproductname'];
	$pPrice=(int)$_POST['tahaproductprice'];
	$pDesc=$_POST['tahaproductdesc'];
	$pPath="image/site/noProductPic.jpg";
	
	if(isset($_FILES['tahaproductpicpath'])){
		if($_FILES['tahaproductpicpath']['error']==0 && ($_FILES['tahaproductpicpath']['type']=="image/jpeg" || $_FILES['tahaproductpicpath']['type']=="image/gif" || $_FILES['tahaproductpicpath']['type']=="image/png")){
			$imageSize=getimagesize($_FILES['tahaproductpicpath']['tmp_name']);
			$width=$imageSize[0];
			$height=$imageSize[1];
			
			if($width>700 || $height>400){
				echo "invalid_file";
				exit;
			}
			else{
				move_uploaded_file($_FILES['tahaproductpicpath']['tmp_name'],'image/product/'.$_FILES['tahaproductpicpath']['name']);
				$pPath="image/product/".$_FILES['tahaproductpicpath']['name'];
			}
		}
	}

	$con=mysqli_connect("localhost","root","");
	if(!$con)
		die("");
	else{
		mysqli_select_db($con,"tahaDB");
		mysqli_query($con,"insert into tahaproducttable(productName,productPrice,productDesc,productPicPath) values('$pName',$pPrice,'$pDesc','$pPath')");
		mysqli_close($con);
		
	}
}



HTML From

<form id="addproduct" enctype="multipart/form-data" style="direction:rtl">
    <input type="text" name="tahaproductname" id="tahaproductname" maxlength="50" />
    <input type="text" name="tahaproductprice" id="tahaproductprice" maxlength="10" />
    <textarea name="tahaproductdesc" id="tahaproductdesc" maxlength="300"></textarea>
    <input type="file" name="tahaproductpicpath" id="tahaproductpicpath" accept="image/jpeg, image/gif, image/png"  /> 
    <input type="hidden" name="tahahiddenadd" id="tahahiddenadd" value="tahahiddenadd" />
    <input type="submit" name="tahasubmitadd" id="tahasubmitadd" value="Add Product" />
</form>

David_Wimbley

Я не вижу в вашем PHP, где вы возвращаете обратно что-либо, чтобы ваш jquery мог получить доступ к нему через объект данных в обратном вызове функции .success.

Кроме того, почему вы используете data.search(? Если вы вернете объект в свой PHP (я считаю, что сначала вы должны сериализовать его в PHP), то вы сможете получить доступ к нему в своем jquery просто как к data.your_property_to_access_and_use.

Pouria Polouk

Спасибо, но я думаю, что мы можем вернуть значение в JQuery, используя "echo" в PHP.
разве не так?

На самом деле мой код не работает следующим образом:
если(данные=="invalid_file")
предупреждение ("размер изображения не совпадает...");

David_Wimbley

Я специально искал функцию json_encode. Вероятно, именно поэтому вы не получаете никаких результатов, поскольку не определяете использование заголовка('Content-type: application/json'); и вы не используете json_encode.

http://php.net/manual/en/function.json-encode.php

Pouria Polouk

Я уже использовал функцию json_encode раньше.
Но это не сработало.
Я не знаю почему!?

0 Ответов