2010-03-29 93 views
1

我遇到IE導致兩個錯誤的問題:
1.對象不支持此屬性或方法
2.調用被調用者拒絕。在windows上導致回調函數導致錯誤,例如:

意向: 要調用window.opener.myObject方法會使用AJAX來獲取一些數據,並通過在回調函數 住在發起呼叫將要處理的響應彈出窗口嵌套函數數據並相應地修改彈出窗口html。

這裏是一個場景: 我拉起彈出窗口,處理一些特定的操作。 該彈出窗口調用使用ajax調用的window.opener.myObject方法。 我正在通過彈出窗口函數來處理響應,它與ff和safari協同工作,但不能與ie協同工作。 這裏是代碼示例

//RELEVANT SCRIPT ON POPUP WINDOW 
$('#myButton').live('click', function() { 
    var h = window.opener.myObject, p = { 'p1': 1 }; 
    var responseHandler = function(responseObj) { 
     //in IE we never got here 
     if (!responseObj) { 
      alert('Unexpected error!! No response from server'); 
      return false; 
     } 
     //..handle response 

    }; 
     p.p1 = $('#control').val(); 
     h.executeMethod(p, responseHandler); 
}); 

//RELEVANT SCRIPT ON WINDOW OPENER MYOBJECT 
try { 
$.ajax({ 
    type: 'POST', 
    async: true, 
    url: url, 
    data: postData, 
    dataType: "json", 
    contentType: 'application/x-www-form-urlencoded; charset=utf-8', 
    success: r, // r here is reference to my responseHandler popup window function 
    error: handleError 
}); 
} catch (ex) { 
alert(ex.message); 
} 

任何提示?

回答

1

我已經使其工作,不知道如果這是正確的方式或不,但現在它的工作。 我修改開窗器myObject的代碼:// 相關的腳本ON開窗器MYOBJECT

try { 
$.ajax({ 
    type: 'POST', 
    async: true, 
    url: url, 
    data: postData, 
    dataType: "json", 
    contentType: 'application/x-www-form-urlencoded; charset=utf-8', 
    success: r, // r here is reference to my responseHandler popup window function** 
    error: handleError 
}); 
} catch (ex) { 
alert(ex.message); 
} 

到:

//RELEVANT SCRIPT ON WINDOW OPENER MYOBJECT 
try { 
$.ajax({ 
    type: 'POST', 
    async: true, 
    url: url, 
    data: postData, 
    dataType: "json", 
    contentType: 'application/x-www-form-urlencoded; charset=utf-8', 
    success: function(myResponseObj) { 
     r.call(null, myResponseObj); 
    } 
    error: handleError 
}); 
} catch (ex) { 
alert(ex.message); 
} 

如此成功的jQuery AJAX的處理程序修改爲:

success: function(myResponseObj) { 
    r.call(null, myResponseObj); 
} 

它現在可以工作:-) ...