Проблема с возвращаемым значением из 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 раньше.
Но это не сработало.
Я не знаю почему!?