2010-12-13 37 views
3

我有一個頁面,其表單有一個文件上傳輸入項目,用於隱藏iframe。當表單發佈到iframe時,服務器處理文件並返回一個json對象。我不知道如何使用jquery,或簡單的舊JavaScript來監聽返回的對象。我有一些代碼設置爲我的iframe中,如...如何使用jquery偵聽返回的json對象

$("#upload_target").load(function() { 
    //what to do here - how do I get the json object? 
}); 

有誰知道如何連接起來的jQuery聽對於發送回IFRAME JSON對象?謝謝。

+0

你有沒有看過使用ajaxComplete()或getJSON()來代替?無論採用哪種方式,您都可以在http://api.jquery.com/load/中查找load()的示例。 (對不起,我不能有更多的幫助) – Mantar 2010-12-13 14:10:33

回答

5

我終於想通了,該怎麼辦呢....

$("#upload_target").load(function (data) { 
    if (data != null){ 
     var obj = jQuery.parseJSON(data); 
     //...work with obj here. 
    } 
}); 

無論是正道與否,它的工作原理。

編輯 - 實際上我有一點領先於我自己。這裏是正確的代碼....

$("#upload_target").load(function(){ 
     var retval = $(frames['upload_target'].document).text(); 
     if (retval != null) 
     { 
      try{ 
       var obj = jQuery.parseJSON(retval); 
       //...work with obj here. 
      }catch(err){} 
     } 
}); 

有一件事我不得不也隨之變化爲確保我的MVC控制器行動設置JSONResult.ContentType =「text/plain的」。否則,我得到一個保存爲下載對話框。

+0

謝謝,我只是在尋找解決方案。 – user200340 2011-09-21 09:31:58

+0

您應該將其標記爲答案。顯然沒有人回答瞭解你的問題,或者你爲什麼需要使用iframe。 – Jereme 2012-12-06 16:32:39

0

你應該使用load這樣:

$("#upload_target").load(
    "http://example.com/myjson.php", 
    function(response, status, xhr) { 

    }); 

但對於Ajax和JSON,你應該使用後,$.getJSON$.get,或$.post$.ajax(這些功能也需要作爲一個參數與參數的回調函數包含結果)。

+0

我不清楚如何使用該職位,然後在這種情況下。我有一個表單,其目標是隱藏的iframe,並使用普通表單發佈來上傳文件。服務器返回發送到iframe的json對象。 $ .getJSON或$ .post如何在像這樣的場景中工作,其中服務器已經返回json? – 2010-12-13 14:25:28

+0

響應將包含JSON數據。 getJSON或post都使用與加載函數相同的回調函數。你可以在jQuery網站上找到例子,也可以參考Google的許多教程。 – 2010-12-13 14:31:13

+0

好吧我誤解了加載函數。我認爲這是爲了在頁面加載時收聽。無論如何,所有這些方法都需要一個url來加載數據。這不是我的scenerio工作方式。在發佈表單後,我已經將json對象從服務器發送到iframe,因此我們已經超過了$ .getjson或$ .post步驟。有沒有辦法設置iframe頁面,只是聽不到使用這些方法之一返回的json?如果我使用其中之一,那麼它試圖調用我的服務器的JSON響應,這不是如何工作。 – 2010-12-13 14:39:41

4

對於這種請求,您不應該使用.load()。它將響應插入選定的元素。當談論物體時,這當然不是你想要的。嘗試$.getJSON()(或$.post()jsondataType):

// $.getJSON uses HTTP GET 
$.getJSON('http://example.com/ajax', function (data) { 
    // data is an object 
}); 

// the same with $.post for POST requests 
$.post('http://example.com/ajax', function (data) { 
    // data is an object 
}, 'json'); 
相關問題