как html формировать постфайловую загрузку и чтение json-ответа от php-сервера

Я пытаюсь загрузить файл на php my server.file и загрузить данные через несколько частей / форм-данных, файл и данные, полученные на php-сервере, но на моем сервере php-сервера ответ json response .please помогите мне, как прочитать ответ json на моей веб-странице и если его успех (код = 0) означает, что он перенаправляет другую страницу. php sever распространен как для андроида, так и для веб-страниц. Ответ на json выглядит как {«code»: 0, «message»: «success»}

<div style="height:0px;overflow:hidden"> <form id="myForm" action="http://192.168.2.4/digiid/api/addid" method="post" enctype="multipart/form-data" runat="server"> <input type="file" name="file" id="file" onchange="showMyImage(this)" /> <input type="hidden" name="userid" value="<?php echo $_SESSION["userid"]?>"> <input type="hidden" id="inputfilename" name="filename" value="here"> </form> </div> <a class="button1" id="browseButton" onclick="" style="width:12%;height: 30px; text-decoration:none;"><font color="white" size="5px">Select ID</font></a> <br/> <div> <img src='images/capture_picture_size.png' id='imgscreen' width='200' height='200'> <br/> <p id="filename" style="color: #ffffff; font-size: 20px" > Title of the ID<br/></p> <a class="button1"onclick="myFunction()" style= " width:12%;height: 30px; text-decoration:none;"><font color="white" size="5px">Save ID</font></a></form> </div> <script> function myFunction() { document.getElementById("myForm").submit(); } </script> <script> browseButton.onclick=function chooseFile() { document.getElementById("file").click(); }; function showMyImage(fileInput) { var files = fileInput.files; var file = files[0]; var imageType = /image.*/; var img=document.getElementById("imgscreen"); var reader = new FileReader(); reader.onload = (function(aImg) { return function(e) { //x=e.target.result img.src = e.target.result; var extfilename=file.name; document.getElementById("filename").innerHTML=extfilename.slice(0,-5) ; document.getElementById("inputfilename").value=extfilename.slice(0,-5); }; })(img); reader.readAsDataURL(file); }</script> 

Думаю, это сработает для вас. Использование AJAX, как и я

  //Your php code $arrToJSON = array( "dataPHPtoJs"=>"yourData", "asYouWant"=>"<div class=\".class1\">soemting</div>" ); return json_encode(array($arrToJSON)); //Your javaScript code $(document).on("event", "#idElement", function(){ //Data you want to send to php evaluate var dt={ ObjEvn:"btn_Login", dataJsToPHP: $("#txt_EmailLogin").val() }; //Ajax var request =$.ajax({//http://api.jquery.com/jQuery.ajax/ url: "yourServer.php", type: "POST", data: dt, dataType: "json" }); //Ajax Done catch JSON from PHP request.done(function(dataset){ for (var index in dataset){ dataPHPtoJsJS=dataset[index].dataPHPtoJs; asManyasYouWantJS=dataset[index].asYouWant; } //JavaScript conditions. Here you can control the behaivior of your html object, based on your PHP response if(dataPHPtoJsJS){ $( "#idYourHtmlElement" ).removeClass( "class1" ) $( "#idYourHtmlElement" ).addClass( "class2" ) } }); //Ajax Fail request.fail(function(jqXHR, textStatus) { alert("Request failed: " + textStatus); }); } 

Вероятно, вы должны использовать вызов AJAX. Вот решение, использующее jQuery:

 <script type="text/javascript"> $(document).ready(function(){ $("#browseButton").click(function(){ var url = ""; var formdata = $("#myForm").serialize(); $.ajax({ url: url, type: 'POST', data: formdata, dataType: 'json', cache: false, contentType: false, processData: false, success: function(response){ if(response.status == "success"){ // Success } else { // Failure } }, error: function(response){ // Error } }); }); }); </script> 

Чтобы перенаправить пользователя, вы можете использовать: window.location.href = " ... your_url ...";

Вот объяснение того, как использовать jQuery AJAX и многочастные данные:

Отправка multipart / formdata с помощью jQuery.ajax

попробуйте json_decode .

  $data = ({"code":0, "message":"success"}); $array = json_decode($data, true); 

передав второй параметр в true, вы получите ответ в массиве вместо объекта.

массив будет заселен следующим образом:

  array (size=2) 'code' => int 0 'message' => string 'success' (length=7) 

Ваш ответ JSON будет своего рода ассоциативным массивом в php. Кодируйте данные массива в JSON, используя «json_encode» и возвращайте значения по мере необходимости.

  $arr = array('status' => $status, 'status2' => $status2, ); echo json_encode($arr); 

ПРИМЕЧАНИЕ. Если вы используете ajax для вызова php-файла, тогда не используйте php echo / print в этом файле, а не даже HTML. ECHO только "json_encode ();" Ничего больше.

Подвести итог:

  1. Загрузите свои данные на сервер с помощью AJAX с родным JS (> = IE10) или jQuery
  2. Поймать (xhr.responseText в родной JS ) и проанализировать ответ
  3. Перенаправление с помощью window.location.href = "success.php"