2014-09-26 13 views
5

tôi đang cố gắng tập tin tải lên php server.file tôi và upload dữ liệu thông qua đa phần/form-data, các tập tin và dữ liệu nhận được trên máy chủ php nhưng trong máy chủ php của tôi trả về trả lời json. hãy giúp tôi cách đọc phản hồi json trong trang web của tôi và nếu thành công của nó (mã = 0) có nghĩa là nó chuyển hướng một trang khác. sever php là phổ biến cho cả trang web và trang web. "mã": 0, "nội dung": "thành công"}cách html hình thức bài - tải lên tập tin và đọc phản ứng json từ máy chủ php

<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> 
+0

Điều gì phản ứng json trông như thế nào? – Vlad

+0

phản hồi json giống như {"mã": 0, "nội dung": "thành công"} –

+0

Bạn có thể định dạng lại mã của mình không? Tại sao bạn cố gắng truy cập $ _POST ['ảnh']? Không có đầu vào như vậy trong biểu mẫu của bạn. Truy cập Fileuploads bằng cách sử dụng $ _FILE không $ _POST –

Trả lời

1

thử json_decode.

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

bằng cách chuyển tham số thứ 2 thành true, bạn sẽ nhận được phản hồi trong mảng thay vì đối tượng.

mảng sau đó sẽ được áp dụng như sau:

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

phản ứng JSON của bạn sẽ là một loại mảng liên kết trong php. Mã hóa dữ liệu mảng của bạn vào JSON bằng cách sử dụng "json_encode" và trả về giá trị theo ý muốn.

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

Chú ý: Nếu bạn đang sử dụng ajax để gọi tập tin php sau đó không sử dụng bất kỳ php echo/in trong tập tin đó và thậm chí không HTML. Chỉ ECHO "json_encode();" Không có gì khác.

2

Bạn có lẽ nên sử dụng một cuộc gọi AJAX. Dưới đây là một giải pháp sử dụng 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> 

Để chuyển hướng người dùng, bạn có thể sử dụng: window.location.href = " ... your_url ...";

Dưới đây là một lời giải thích về cách sử dụng jQuery AJAX và đa phần dữ liệu:

Sending multipart/formdata with jQuery.ajax

5

Tôi nghĩ rằng nó sẽ làm việc cho bạn. Sử dụng AJAX, như tôi đã làm

 //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); 
      }); 
    } 
1

Nói tóm lại:

  1. Tải lên dữ liệu của bạn đến máy chủ sử dụng AJAX với native JS (> = IE10) hoặc jQuery
  2. Catch (xhr.responseText trong native JS) và parse the response
  3. Chuyển hướng với window.location.href = "success.php"
Các vấn đề liên quan