2012-08-15 111 views
1

我有兩個頁面,一個名爲upload-file.php,這個頁面將圖像上傳到數據庫和我的文件夾中。如何將PHP變量名傳遞給Javascript函數

我的PHP頁面看起來像這樣。

if (move_uploaded_file($_FILES['uploadfile']['tmp_name'], $file)) 
    { 



     $insert=mysql_query("insert into match_item_image set item_id='".$_SESSION["session_temp"]."', image='".$name."', adid='$adid'") or die(mysql_error()); 
$cc=mysql_insert_id(); 
     echo "success".$cc; 

我的其他頁面包含一個javascript函數,它在上傳時顯示我的圖像。 我遇到的問題是,我需要更改圖像名稱時,上傳到我的文件夾。我能夠更改圖像名稱,但是當我上傳圖像時,它顯示爲空白,因爲JavaScript功能正在尋找圖像的原始名稱,當用戶上傳文件時。

這是函數的一部分:

$(function() 


{ 

    var btnUpload=$('#upload'); 
    var status=$('#status'); 
    new AjaxUpload(btnUpload, { 
    action: 'upload-file.php', 
    name: 'uploadfile', 
    onSubmit: function(file, ext) 
    { 
    if (! (ext && /^(jpg|png|jpeg|gif)$/.test(ext))){ 
    // extension is not allowed 
    status.text('Only JPG, PNG or GIF files are allowed'); 
    return false; 
    }status.text('Uploading...'); 
    }, 

    onComplete: function(file, response) 
    { 
     //On completion clear the status 
     status.text(''); 
     //Add uploaded file to list 
     var bb=response.substr(0,7) 
     var idd=response.replace('success',' '); 
     var idb =idd.replace(/^\s*|\s*$/g,''); 
     if(bb==="success") 
     { 


      $('<span id='+idd+'></span>').appendTo('#files').html('<img src="upload/+file+" alt="" width="290" height="330" class="image1" /><br><a href="javascript:void(0)" onClick="deleteFile('+idd+');" class="image1" > <span style="font-weight:bold; font-size:14px; color:red;" > Delete  </span></a>').addClass('success'); 
     } 
     else 
     { 
      $('<span></span>').appendTo('#files').text(response).addClass('error'); 
     } 

請讓我知道,如果有人可以提供幫助。

我是javascript的新手。

嗨,

我忘了補充一點的形式上傳的圖片看起來像這樣

<div id="upload" ><span>Upload Image<span></div><span id="status"></span> 
<table><tr><td id="files"></td></tr></table> 

我只需要知道我怎樣才能讓我的代碼顯示我已保存的圖像名稱我的文件夾和我上傳後,而不是用戶上傳的原始圖像名稱,因爲可能有其他用戶上傳的圖像具有相同的名稱,他們正在混淆。

感謝大家的幫助。我已經爲此工作了好幾個星期了,而且我似乎無法弄清楚。我只是不想放棄這段代碼,因爲它正是我所需要的。

回答

1

您可以編寫PHP直接進入你的JavaScript是這樣的:

<script> 
alert('<?php echo $myVar; ?>'); 
</script> 

或者,你可以創建AJAX調用來獲取數據庫變量,由PHP腳本處理。

建議根據您的代碼:

讓你的onSuccess功能,給你從PHP頁面的文件名。你可以用JSON來做到這一點。請詢問您是否需要幫助。

+0

他談論的是從響應傳遞文本使用Ajax從PHP腳本了。 – 2012-08-15 17:07:09

+0

@MihaiIorga:我想我明白了。我建議他讓PHP文件返回一個JSON字符串,並從那裏獲取JS的值。 – user1477388 2012-08-15 17:09:12

+0

從不將原始數據從PHP嵌入到JavaScript代碼塊中。您冒險引入語法錯誤並殺死整個腳本。總是使用json_encode。 – 2012-08-15 17:18:05

0
echo '<script type="text/javascript">var myJSVar = '.$myPHPVar.';</script>'; 
+0

他正在談論從PHP腳本得到的響應中傳遞帶有ajax的文本。 – 2012-08-15 17:07:51

+1

永遠不要將原始的php數據嵌入到javscript代碼塊中。你冒險引入JS語法錯誤並殺死整個腳本。總是使用json_encode()。 – 2012-08-15 17:18:34

+0

完全同意......我只是回答的「如何從PHP通過JavaScript變量」簡單的問題......所有的數據應該來自從服務器的響應 – mattnull 2012-08-15 17:19:57

0

您將希望讓PHP腳本輸出新名稱,然後在JavaScript中使用該名稱。你如何去提取響應取決於你的AJAX代碼,我不熟悉你在例子中使用的。

1

代替此PHP-代碼:

echo "success".$cc; 

你可以輸出你的結果作爲一個JSON字符串,它可以很容易地訪問由JavaScript:

header("Content-Type: application/json"); 
    echo "{ 
     \"status\" : \"success\", 
     \"filename\" : "$file", 
     \"id\" : $cc 
    }"; 

而是這個JavaScript部分

//Add uploaded file to list 
    var bb=response.substr(0,7) 
    var idd=response.replace('success',' '); 
    var idb =idd.replace(/^\s*|\s*$/g,''); 

然後,您將能夠訪問結果的參數,就像t的屬性他迴應對象:

var bb = response.status; 
    var idd = response.id; 
    var filename = response.filename; 

有關更多信息,請參閱http://de.wikipedia.org/wiki/JSON。 您還可以使用PHP函數用於JSON輸出:http://www.php.net/manual/de/function.json-encode.php