2014-01-23 153 views
0

在我的index.php中,我有一個更新按鈕,如下所示。JavaScript變量爲PHP腳本

<form action="update.php" method="post" > 
    <button type="submit">Update</button> 
</form> 

我已經定義了一個javascript函數來覆蓋默認的窗體動作。 javascript函數如下。

<script type="text/javascript"> 
$(document).ready(function() { 
$('form').submit(function(e) { 
    e.preventDefault(); 
    alert("HI"); 
    $.ajax({ 
     type: 'post', 
     url: 'update.php', 
     data: { 
      source1: "some text", 
     }, 
     success: function(data) { 
      console.log(data); 
     } 
    }); 
}); 
}); 
</script> 

當我點擊更新按鈕後,我得到了警報。但是,我沒有按預期重定向到update.php頁面。我正嘗試在ajax請求中發送一些可用於在update.php頁面中處理的值。

+1

你將不會被重定向,因爲您沒有重定向腳本。您不能在AJAX調用中使用PHP重定向。如果你想重定向,你爲什麼要使用AJAX? – putvande

+1

你如何訪問'update.php'中的數據?這個問題對於那裏的任何相關**問題有什麼不同? ---> – naththedeveloper

+1

你不會使用ajax重定向,這就是ajax的要點。 – superphonic

回答

1

由於PHP重定向不會影響瀏覽器,因此在您作爲AJAX調用運行時,您並未重定向。你需要指定一個JavaScript重定向在success功能:

$.ajax({ 
    type: 'post', 
    url: 'update.php', 
    data: { 
     source1: "some text", 
    }, 
    success: function(data) { 
     document.location.href = 'update.php' 
    } 
}); 

不過,我不認爲這是你想要的。你似乎想在提交表單,其中它可能是更好的防止默認行爲,隱藏輸入字段添加任何額外的數據,然後添加新的表單數據重新提交形式:

$(function() 
    { 

    $('form').submit(function (e) 
    { 

     if ($(this).is(':not([data-submit="true"])')) 
     { 

     $('form').append('<input type="hidden" name="foo" value="bar">') 

     $('form').data('submit', 'true').submit() 

     e.preventDefault() 

     return false 

     } 

    } 
    ) 

    } 
) 

</script> 
+0

我需要在成功時調用update.php函數。我現在可以從ajax調用update.php。但是,我正在使用POST在update.php文件中訪問JavaScript變量。它沒有顯示在我的update.php文件中。 –

+0

要使數據出現在$ _POST變量中,它需要與表單一起發佈。因此,我添加一個隱藏的輸入字段包含值的示例。 – MichaelRushton