2016-08-05 90 views
1

我有一個表單,用戶提交圖像,提交後圖像URL將顯示在輸入文本字段。表單數據通過Ajax傳遞給PHP。圖像然後被上傳到服務器。我已經實現了提交系統,但我不知道如何在輸入文本字段中顯示上傳的URL,以便用戶可以看到它。我不希望頁面刷新,這一切都是動態發生的。提交後顯示圖像URL

這裏是我的代碼:

HTML

<form class="image_upload" method="post" action=""> 
    <input name="server_upload" type="file"> 
    <input type="text" name="image_url" readonly> 
    <input type="submit" value="UPLOAD TO SERVER"> 
</form> 

的jQuery /阿賈克斯

$('.image_upload').on('submit', function(e) { 
     e.preventDefault(); 
     e.stopImmediatePropagation(); 
     if ($('.image_upload').valid()) 
     { 

      $.ajax({ 
       type: 'POST', 
       url: '', 
       data: new FormData(this), 
       processData: false, 
       contentType: false, 
       success: function(data) { 

       } 
      }) 
    } 
}) 

PHP

if (isset($_FILES["server_upload"])) 
    { 
     $name = $_FILES["server_upload"]["name"]; 
     $tempName = $_FILES["server_upload"]["tmp_name"]; 
     $target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name"; 
     if (getimagesize($target_file) == true) 
     { 
      $ext = pathinfo($name, PATHINFO_EXTENSION);  
      $name = basename($name, "." . $ext); 
      $name = $name . uniqid() . "." . $ext; 
      $target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name"; 
     } 

     move_uploaded_file($tempName, $target_file); 
    } 

我希望$ target_file在用戶提交圖像後在輸入文本表單域中顯示。我該如何做到這一點?你有

+0

您可以使用會話,這是一個選項,並將其設置爲變量/會話數組並在輸入值中的條件語句中 –

+0

@ Fred-ii-如何在沒有輸入文本字段的情況下輸出會話正在刷新頁面? – user2896120

+0

從你的PHP函數輸出任何你需要的東西,也許'echo $ target_file' - 在你的AJAX函數中讀取它(它會在你的'success:'代碼中成爲'data')...用'data'做些事情來顯示你需要的地方......或者不是從一般提示中找出自己的想法,只是使用已發佈的答案 - 這正是你想要的東西 –

回答

1

一種選擇是行之後呼應$target_file

move_uploaded_file($tempName, $target_file); 
echo $target_file; 

然後在你的AJAX的成功,你可以使用此類似:

$.ajax({ 
    type: 'POST', 
    url: '',      // (*) 
    data: new FormData(this), 
    processData: false, 
    contentType: false, 
    success: function(data) { 
     $('input[name=image_url]').val(data); 
    } 
}); 

只要表單提交不帶你到另一個頁面,data將是你所呼應的。

(*)注:

  • 由於url是空的,在缺省情況下是當前頁面,上面的代碼將返回整個頁面。如果你把PHP放到另一個文件中並且像url: 'file.php'那樣調用它,它將會正常工作。
+0

由於某種原因,當我這樣做時,它會在輸入框中顯示我所有的HTML代碼 – user2896120

+0

它必須是因爲'url'是空的,默認是當前頁面,因此您要返回整個頁面。如果你把php放到另一個文件中,並在'url:'file.php'上面的'url'中調用它,'它會正確返回。 – Ekin

+0

當我這樣做時,文件中的所有PHP代碼正在被echo'd out – user2896120