PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : حل مشکل json



xwoman2
September 6th, 2016, 00:17
سلام دوستان.
یک فرم ثبت نام سه مرحله ای هست که ابتدا فایل رو از کاربر دریافت میکنه.بعد یه سری اطلاعات میگیره و در آخر کاربر وارد میشه یا ثبت نام میکنه
مشکلی که وجود داره این هست که در همون ابتدا موقعی که فایل رو قرار هست آپلود کنیم این ارور رو می ده :
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
این در صورتی هست که تا دیروز بدون مشکل کار میکرد
لطف میکنید اگر کمک کنید.

T.Toosi
September 6th, 2016, 00:30
سلام، json شما نامعتبر هست برای همین parse نمیتواند بکند، ممکن کارکتری نامعتبر ورودی میگیرد که باعث بهم ریختن json می شود.

xwoman2
September 6th, 2016, 00:31
با تشکر از پاسخ
اگر datatype رو بردارم ممکن هست درست بشه ؟

T.Toosi
September 6th, 2016, 00:36
با تشکر از پاسخ
اگر datatype رو بردارم ممکن هست درست بشه ؟

با جاوا اسکریپت دارید json را ارسال میکنید ؟ ابتدا خروجی json را چاپ کنید ببینید چرا نامعتبر هست.

xwoman2
September 6th, 2016, 00:37
اینو ببینید :


if (!isset($_FILES['file']) || $_FILES['file']['error']!=0) jres("مشکلی در آپلود فایل وجود دارد!");
if (!in_array($_FILES['file']['type'], array("text/plain", "application/x-rar-compressed", "application/zip", "application/pdf", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document","image/jpeg","image/png"))) jres("نوع فایل آپلود شده غیرمعتبر می باشد!");
$newpath = FULLPATH."/files/tmporders/" .rand(10000,99999)."-".$_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'], $newpath);
$_FILES['file']['tmp_name'] = $newpath;
$_SESSION['neworder']['file'] = $_FILES['file'];
jres($_FILES['file']['name'], true);
break;

$fjs .= '
$(document).ready(function() {
$("#subject").select2({dir: "rtl"});
$("#mobileRegister").mask("09000000000");
$("#deldate").persianDatepicker();
$("#drag-and-drop-zone").dmUploader({
url: "neworder-ajax.php?op=upload",
dataType: "json",
maxFiles: 1,
maxFileSize: 20971520,
extFilter: "pdf;zip;rar;rtf;doc;docx;txt;jpg;png",
onBeforeUpload: function(id){
$("#upst").html(\'<div class="progress"><div id="uprogbar" class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">در حال آپلود، لطفا منتظر باشید...</div></div>\');
},
onUploadProgress: function(id, percent){
$("#uprogbar").css({width:percent+"%"}).attr("aria-valuenow", percent);
},
onUploadSuccess: function(id, data){
if (data.done) {
$("#upst").html(getalert("فایل با موفقیت آپلود شد، در صورتی که می خواهید فایل را تغییر دهید مجددا فایل دیگری را آپلود کنید جایگزین فایل آپلود شده فعلی خواهد شد.", "success"));
$("#upfn").html(data.data).append(" <button class=\'btn btn-xs btn-danger\' onclick=\'delfile();\'>حذف</button>");
} else {
$("#upst").html(getalert(data.data, "warning"));
}
},
onUploadError: function(id, message){
$("#upst").html(getalert(message, "danger"));
},
onFileTypeError: function(file){
$("#upst").html(getalert("FileTypeError", "danger"));
},
onFileSizeError: function(file){
$("#upst").html(getalert("حجم فایل انتخابی نباید بزرگتر از 20 مگابایت باشد", "danger"));
},
onFallbackMode: function(message){
$("#upst").html(getalert(message, "danger"));
}
});
اولی مربوط به ایجکس هست.

xwoman2
September 6th, 2016, 02:43
کسی نبود ؟

T.Toosi
September 6th, 2016, 02:58
تابع jres چیکار میکنه ؟ خروجیشو بگیرید.

xwoman2
September 6th, 2016, 04:43
تابع jres چیکار میکنه ؟ خروجیشو بگیرید.

function jres($data, $done=false) {
$res = array('data'=>$data, 'done'=>$done);
echo json_encode($res);
exit;
}

فکر نکنم اشکال از این تابع باشه.این که داره کار خودشو میکنه.

ms313
September 6th, 2016, 17:12
ما که ایمجوری نمی تونیم تست کنیم !
می تونید از pro.jsonlint.com استفاده کنید !
ولی مشکل می تونه از همچین چیز هایی باشه " ' , ' " خروجی جی سان رو با دقت چک کنید .
موفق باشید .

k-pax
September 6th, 2016, 18:25
توی فایل php هدر را جسون بزارید

header('content-type: application/json; charset=utf-8');
اینو بزارید اول فایلتون

یا قبل از

jres($_FILES['file']['name'], true);

iHSG
September 7th, 2016, 10:11
در ادامه پیشنهاد جناب k-pax (http://www.webhostingtalk.ir/member.php?u=36198) پس از ارسال خروجی json هم بهتره با تابع exit برنامه هم خاتمه بدید.