2015-01-02 53 views
1

請幫助我。

我有形式像這樣的index.php

<form id="statusForm" enctype="multipart/form-data" method="post"> 
    <textarea name="statusText" role="textbox" id="wallpost"></textarea> 
    <input id="photo_input" type="file" name="photo_input" /> 
    <input type="hidden" name="to_id" value="1" > 
    <button type="button" name="submit" onClick="write_wall_post();"> 
</form> 
<div id="content"></div> 

那麼我.js文件來處理這種形式

function write_wall_post() 
{ 

var formData = new FormData($("#statusForm")[0]); 
    $.ajax({ 
     type: "POST", 
     url: "act_post_status.php", 
     data: formData, 
     success: function(data){ 
      $("#wallpost").val("");    
      $("#photo_input").val(''); 
      var newStatus=data; 
      $(newStatus).hide().prependTo("#content").fadeIn(2000); 
     }, 
     processData: false, // tell jQuery not to process the data 
     contentType: false, 
     cache:false 
    }); 
} 

和我有act_post_status.php處理此文件提交

<?php 
//some configuration 
if($_SERVER['REQUEST_METHOD'] == "POST") 
{ 
    //some variable declaration and image validation 
    //Original Image 
    if(move_uploaded_file($uploadedfile, $path.$time.'.'.$ext)) 
    { 
     $is_image=1; 
    } 
    else 
     echo "failed"; 
    } 
} 


//inserting data to database 
    $status = trim(strip_tags(htmlspecialchars($_POST["statusText"]))); 
    mysql_query("insert into news (status,is_image) values ('$status','$is_image')"); 
    echo "<div class='post'>$status</div>"; 
?> 

我想要的場景是: 當用戶輸入數據(狀態),然後點擊提交按鈕,內容自動顯示更新(的jQuery處理)

但事實是:

(1)當我填寫表格(包括狀態和圖片),它工作正常。

(2)但是當我剛完成數據表單(僅填充狀態輸入)時,它已成功提交到數據庫,但內容不會自動更新。我應該刷新它們以獲得更新。 (3)當我剛剛填寫圖像輸入時,它像情況(1)一樣正常工作。

如果($ _ SERVER ['REQUEST_METHOD'] ==「POST」)在數據輸入(狀態)爲空白/空白時無法通過ajax請求回顯輸入。

數以萬計的感謝。 :)

+0

你在哪裏設置'$ uploadedfile'? – Barmar

+0

在代碼中,我寫了//一些變量聲明和圖像驗證,這是聲明變量部分。這不是重點,因爲圖像可以成功上傳,當我填寫圖像輸入時,它已成功更新。 問題是當我離開圖像輸入爲空。數據已成功提交到數據庫,但內容不會自動更新(需要刷新頁面)。 但是當我填充圖像輸入時(無論是否填充狀態輸入),內容將自動更新 – setyo

+0

您在處理沒有上傳文件的表單時可能會出錯。您是否檢查過網絡標籤以查找錯誤? – Barmar

回答

0

我不知道爲什麼它關係到是否讓文件輸入未填充,但您需要在使用AJAX時禁用標準表單提交。 onclick函數應該返回false來執行此操作。

<button type="button" name="submit" onClick="write_wall_post();return false;"> 
+0

它不工作.. :( 奇怪的是它提交到數據庫成功。但沒有打印任何後if($ _ SERVER ['REQUEST_METHOD'] ==「POST」),除了我填寫圖像輸入 一些文字在它成功打印之前 – setyo

+0

謝謝。在觀察你的建議後,再次提醒你注意成功時的一些功能,它的工作原理是這樣的,所以問題是不會離開文件輸入不填充。即時新在這裏,但非常感謝幫助我:) – setyo

+0

你不需要任何聲譽來接受答案。 – Barmar