2012-09-05 63 views
1

所以這是一個奇怪的問題,你可能會認爲這是相反的方式,但它來了。從PHP觸發AJAX

我使用了一個名爲Laravel的框架。不是說它有什麼區別,但我認爲這是值得一提的。在這個框架中,我有一個網絡應用程序,可以對相冊中的圖片進行評分。

正在上傳的圖片來自Android應用程序。該圖片由手機制作,將其轉換爲base64並將其發送到網絡應用程序。它發送的輸入正被我的網絡應用程序中的控制器操作接收。

上面的工作!但是現在我想在控制器動作開始使用時在PHP中觸發某種事件。因此,當圖片上傳時,使用網絡應用程序的用戶會看到添加到相冊的新圖片。

任何人都可以爲我指出正確的方向嗎?

非常感謝提前。

+0

我覺得你最好的選擇可能是考慮異步上傳圖像,然後運行在更新頁面的回調函數成功。 – Erik

+0

但是,如何在Android asynctask需要url時上傳圖片異步?我不相信這是從應用程序方面可能的,所以它必須在Web應用程序端處理。 Web應用程序的唯一觸發器是處理從Phone發送的base64字符串的控制器函數。 –

回答

0

那麼,你可能會受到這個網站的啓發,並在Web應用程序的頂部放置一個欄,通知用戶有關更改。

或者創建一個點亮的重新加載按鈕並指示更改次數。當用戶點擊該按鈕時,畫廊可以重新加載。

0

設置一個輪詢器來檢查每X秒新圖像。如果有新圖像,則顯示它。

這是如何計算新答案的計算器。如果您檢查Firebug中的控制檯選項卡,您會看到它每30秒輪詢一次(ish)。

例(使用jQuery):

setInterval(function() { 
    $.getJSON('/check-for-images', function(data) { 
     if (data instanceof Array) { 
      $.each(data, function(i, image) { 
       $('<img/>').attr('src', image).appendTo('#container'); 
      } 
     } 
    }); 
}, 30000); 

PHP:

$result = query('SELECT name FROM images WHERE date > :lastUpdated', $lastUpdated); 
echo json_encode(fetchArray($results)); 
+0

謝謝,我已經知道這個解決方案但我不認爲它是一個漂亮的。我喜歡的解決方案是websockets,但它確實需要nodejs服務器或其他東西。我只有一個Apache服務器和PHP。 –

+0

Ratchet是一個PHP的網絡套接字庫。只需檢查與網絡套接字和使用您的應用程序的手機的兼容性。 – Mike

+1

@Jack我不明白怎麼不使用這個***標準***方法是不可接受的。什麼不是「漂亮」的? – Petah