2011-06-29 90 views
1

我通過jQuery ajax將一個變量從一個文件傳遞給另一個包含表單的php文件。在數據被傳遞到的表單頁面中有下面的代碼,這些值被正確地傳入,並且字段被正確的條目填充,我能夠用螢火蟲響應來做到這一點,但頁面不是自動提交。他們的任何我應該尋找的是阻止自動提交表單。如果我直接訪問表單頁面,我可以看到自動提交作品。表單自動提交ajax不工作

<?php 
$title = $_POST['title']; 
$wrapper = $_POST['wrapper'];?> 

<form action="test.php" method="post" id="publish"> 
    <input type="text" value="<?php echo $title ?>" name="title"> 
    <textarea name="wrapper"><?php echo $wrapper?></textarea> 
    <input type="submit" value="Submit"> 
</form> 

<script> 
window.onload = function(){ 
document.getElementById('publish').submit(); 
} 
</script> 

Ajax代碼正在發送的值看起來像這樣

$.ajax({ 
    type: "POST", 
    url: "process.php", 
     data: { 
    title: 'test', 
    wrapper: 'testing123' 
    }, 
    success: function(msg){ 
    alert("Data Saved: " + msg); 
    } 
}); 
+0

[Danger Will Robinson](http://en.wikipedia.org/wiki/Cross-site_scripting) – Quentin

回答

1

從我看到的自動提交鏈接到「publishForm」

然而,你的表格ID是「發佈「

這可能是代碼無法正常工作的原因。

2

現貨的區別:

getElementById('publishForm') 

id="publish" 
+0

對不起,這是在stackoverflow錯字。我有他們兩個相同的id =形式。值正在傳入,但表單不是自動提交。 – Pinkie

+0

Retyping代碼,而不是使用原來的差異。您這樣做會增加一個錯誤,您很可能已經刪除了一個錯誤。你的實際代碼是什麼樣的? – Quentin

+0

代碼看起來和我上面的一樣。我在頁面上沒有其他東西。通過ajax提交值的其他頁面包含ajax函數,因爲它提交的值和表單頁面正在正確接收值,所以不需要在此顯示。 – Pinkie

0

編輯

要打破下來:

  • 您對SourcePage.php代碼(我做了這個名字以供參考)是發佈data.php通過AJAX請求
  • process.php然後注入「標題」&「包裝」到html標記中,並返回帶有一些javascript的html到SourcePage.php
  • 然後,您希望在SourcePage.php中顯示返回html的結果字符串(msg)將獲得該字符串中的javascript執行。

要做到這一點,您需要做一些事情。

  1. 從html解析出傳入的javascript。
  2. 將傳入的解析HTML注入到SourcePage.php的標記中。
  3. 將解析出來的JavaScript傳遞給JavaScript的eval函數。

這樣做應該從process.php將頁面併成功上SourcePage.php執行JavaScript代碼。

如果您期待JavaScript能夠在服務器上運行,那麼恐怕您錯誤了,因爲服務器(php運行時)將不會在服務器上執行JavaScript。也許服務器上的重定向將實現你的目標(無論可能如何)。

原始

嘗試了這一點:http://jsfiddle.net/NiceGuy4263/eJLMS/

+0

這與問題無關。正如我在上面的帖子中所提到的,自動提交在直接訪問頁面時起作用,所以這不是問題,它在通過ajax接收值時不起作用。 – Pinkie

+0

@Pinkie - 查看我的更新回答 –

0

也許你應該告訴我們來電代碼,而不是處理程序代碼。很可能你要處理的是JS在AJAX調用期間沒有運行 - PHP頁面處理是服務器端。

你可以看看使用PHP Curl而不是JS發送表單嗎?這可能會解決直接加載的問題,但在從另一個頁面調用時會失敗。

+0

我更新了問題,幷包含發送值的ajax代碼。 – Pinkie

0

據我瞭解,該HTML是通過AJAX加載,對吧?如果是這樣,那麼window.onload將不會被觸發,因爲頁面已經被加載(AJAX不計數)。只是這樣做:

<script type="text/javascript"> 
    document.getElementById('publish').submit(); 
</script>