2013-02-15 76 views
0

我有一個圖像上傳,它使用iframe + php來上傳圖像並在頁面上顯示它,而不會刷新(有點像預覽)。通過iframe發送js變量?

我希望能夠向iframe和php腳本發送一個變量(它總是一個整數,它是一個自動增量mysql ID),以便任何編輯/重新上傳等都會影響同一個表格行像之前一樣。

所以澄清:

  1. 我有存儲在一個js變量
  2. 在文件輸入的「改變」一個整數,我需要通過iframe中以某種方式發送此變量的PHP腳本, PHP腳本可以解釋和使用它。

編輯:

繼承人我的代碼一些精簡版,以幫助解釋。首先,文件輸入的實際頁面:

<form id="file_upload_form" method="post" enctype="multipart/form-data" action="last-id-test.php" target="upload_target"> 
<input name="file" id="file" size="27" type="file" /><br /> 
<input type="submit" name="action" value="Upload" /><br /> 
<iframe id="upload_target" name="upload_target" src="" style="width:100px;height:100px;border:1px solid #c9cfdd;"></iframe> 
</form> 

所以表單提交時,它使用最後-ID-test.php的腳本來完成實際的上傳/插入到數據庫中,但通過做它的目標iframe,'upload_target'以避免頁面重新加載。

- 一些PHP的事情發生,但我得到了mysqli_insert_id()上載與發回的頁面,在那裏它被保存在「insertID」變量:

function uploadDone() { //Function will be called when iframe is loaded 
var returnedValues = frames['upload_target'].document.getElementsByTagName("body") [0].innerHTML.split('@'); 
insertID = returnedValues[0]; 
imgName = returnedValues[1]; 
makeImage =$('<img>').attr('src','images/listing-images/'+imgName); 

makeImage.appendTo($('#image-preview')); 
} 

在這裏,我還加圖像的預覽。

那麼,如何將insertID變量發送到php腳本文件輸入的'更改'?

+0

我們不能幫助您根據未知代碼! – 2013-02-15 22:50:31

+0

您可以在會話中存儲變量並通過AJAX設置/檢索它嗎? – Andrew 2013-02-16 00:39:15

回答

0

發送它作爲一個查詢變量,如/viewImage.php?image_id=123

在PHP可以讀取這些查詢變量如$_GET['image_id']

0

我有隱藏的輸入來實現這一點,動態生成的,並將其值屬性設置爲返回insertID變量:

function uploadDone() { //Function will be called when iframe is loaded 
var returnedValues = frames['upload_target'].document.getElementsByTagName("body")[0].innerHTML.split('@'); 
var insertID = returnedValues[0]; 
var imgName = returnedValues[1]; 
var makeImage =$('<img>').attr('src','images/listing-images/'+imgName); 

makeImage.appendTo($('#image-preview')); 

var makeInput = $('<input>').attr('type','hidden').attr('id','insertID').attr('value',insertID).attr('name','insertID'); 

makeInput.appendTo($('#file_upload_form')); 
} 
+0

請注意,如果您打算在同一頁面上多次運行此功能,則每次都會添加一個新的隱藏輸入,而不會刪除前一個。由於它們都具有相同的ID,所以效果將不明確。您可能想要1)在html(php)中創建隱藏的輸入,並在uploadDone fn中設置它的值,或者2)在創建uploadDone函數之前檢查它不存在。 (如果是這樣,只需更新值。) – 2013-02-16 04:42:55