2012-02-03 28 views
6

Tôi đang cố đăng dữ liệu bằng jQuery trong ứng dụng asp.net lên cửa sổ bật lên.asp.net/jQuery: đăng dữ liệu bằng jQuery lên cửa sổ bật lên [IE]

Nếu cửa sổ bật lên mở ra, tôi nhận được ba lỗi. Lỗi đầu tiên là:

Errror: the value of the property is null or undefined not a function object 

(mã lỗi [Mã là vào trang web cửa sổ bật lên]: http:. //www.suckmypic.net/26449/e65f2d77.png, orig mã [code đang trong cửa sổ bật lên site]: http: //www.suckmypic.net/26450/7dfdf013.png)

thì tôi nhận được two errors các chức năng riêng được bao gồm chính xác.

Sau đó - nếu tôi là , hãy tải lại cửa sổ bật lên, mọi thứ đều hoạt động tốt.

tôi mở popup theo cách này:

$.post('popup.aspx', { X: $("#X1").val(), XX: varX, XXX: varXY, Z: varZ}, function (result) { 

    hWndHelp = window.open('', 'help', cStyle); 
    hWndHelp.focus(); 
    hWndHelp.document.open(); 
    hWndHelp.document.write(result); 
    hWndHelp.document.close(); 
}); 

(nó được lưu trữ trong một chức năng mà tôi đang kêu gọi nhấn phím f1 mà là làm việc tốt)

Tôi tham chiếu trong trang chính và trong cửa sổ bật lên tất cả các chức năng của tôi và thư viện jquery.

Sửa

Mã cho cStyle var:

var WIN_STYLE_RESIZE = 
    'resizable = yes, ' + 
    'status = yes, ' + 
    'scrollbars = yes'; 

var cStyle = 
     WIN_STYLE_RESIZE + ', ' + 
     'width = ' + w + ', ' + 
     'height = ' + h + ', ' + 
     'top = ' + y + ', ' + 
     'left = ' + x; 

(w, h, y, x được tính toán con số, căn cứ vào kích thước cửa sổ)

Nếu tôi thay đổi nó chỉ đơn giản là 'width=600,height=400', lỗi vẫn xảy ra.

Nếu tôi gửi các biến của mình qua get thì cũng có thể hoạt động, nhưng tôi cần phải ẩn các biến trong URL.

Làm việc phương pháp get:

var getUrl = "popup.aspx?X="+$('#X1').val()+"&...."; 
hWndHelp = window.open(getUrl, 'help', cStyle); 

Sửa Một: chrome Chỉ cần cố gắng và firefox - không có lỗi đó. Nhưng tôi cần mã để làm việc với IE.

+0

trong dòng phù thủy bạn nhận được lỗi đầu tiên? – Aristos

+0

dòng 2 (dòng 1 trống) –

+0

Tôi mất bạn, bạn có thể chỉ ra điều này trên mã không? – Aristos

Trả lời

2

Trước hết cảm ơn cho trả lời.

Tôi đã thử mọi câu trả lời, nhưng tôi vẫn luôn gặp lỗi trong trình khám phá internet.

Tôi đã tìm được giải pháp thay thế, nhưng nó không làm tôi hạnh phúc vì tôi nghĩ việc tạo một biểu mẫu mới với các trường nhập liệu là quá nhiều cho nhu cầu của tôi.

Vì đó là tùy chọn duy nhất làm việc để đăng dữ liệu của tôi vào cửa sổ bật lên mà không gặp lỗi jQuery, tôi đã quyết định sử dụng nó.

var form = document.createElement("form"); 
form.setAttribute("method", "post"); 
form.setAttribute("action", "popup.aspx"); 
form.setAttribute("target", "help"); 

var input = document.createElement("input"); 
input.type = "hidden"; 
input.name = "X"; 
input.value = $("#X").val(); 
form.appendChild(input); 

var input2 = document.createElement("input"); 
input2.type = "hidden"; 
input2.name = "XX"; 
input2.value = varX; 
form.appendChild(input2); 

var input3 = document.createElement("input"); 
input3.type = "hidden"; 
input3.name = "XXX"; 
input3.value = varXY; 
form.appendChild(input3); 

var input4 = document.createElement("input"); 
input4.type = "hidden"; 
input4.name = "Z"; 
input4.value = varZ; 
form.appendChild(input4); 

document.body.appendChild(form); 

hWndHelp = window.open("about:blank", "help", cStyle); 
hWndHelp.focus(); 

form.submit(); 
document.body.removeChild(form); 

nguồn gốc: http://taswar.zeytinsoft.com/2010/07/08/javascript-http-post-data-to-new-window-or-pop-up/

2

Hãy dành chút thời gian để mở window trước khi truy cập. Thử cái này.

$.post('popup.aspx', { X: $("#X1").val(), XX: varX, XXX: varXY, Z: varZ}, function (result) { 

    var hWndHelp = window.open('', 'help', cStyle); 
    setTimeout(function(){ 
    hWndHelp.focus(); 
    hWndHelp.document.open(); 
    hWndHelp.document.write(result); 
    hWndHelp.document.close(); 
    }, 400); 
}); 
+0

nó không loại bỏ lỗi của tôi :( –

0

Có vẻ như bạn đang thiếu jQuery trong popup.aspx. Hãy chắc chắn rằng nó được bao gồm.

+0

vui lòng đọc bài đi cẩn thận hơn –

1

Tôi đoán thư viện jquery đang được tải trên cả hai trang.

Và cũng có thể bạn đã bao gồm $ .post trong $ (function() {.......}

$ function viết tắt .post với $.ajax, vì vậy nó hoạt động như không đồng bộ. Tôi đề nghị làm cho nó đồng bộ nếu có thể.

+0

như vậy, làm thế nào bạn sẽ làm điều đó tôi đã cố gắng:?. chức năng myFunction() { '$ ('# myForm') nộp (chức năng() { window.open ('popup.aspx', 'help', cStyle); $ ('# myForm'). Target = 'help'; }); $ ('# myForm'). Submit () } ' Khi tôi đang nhấn' F1' (tôi đang gọi hàm của mình theo cách này như tôi đã mô tả), một cửa sổ sẽ mở ra, nhưng trong giây tiếp theo, trang chính sẽ tải lại. 01 –

+0

sử dụng $ .ajax để thay thế của $ .post http://api.jquery.com/jQuery.post/ – Rohit

1

thử điều này:

$.ajax({ 
    type: 'POST', 
    url: 'popup.aspx', 
    data: { X: $("#X1").val(), XX: varX, XXX: varXY, Z: varZ}, 
    success: function(data, textStatus, jqXHR) { 

    var hWndHelp = window.open('about:blank', 'help', cStyle); 

    hWndHelp.focus(); 
    hWndHelp.document.open(); 
    hWndHelp.document.write(data); 
    hWndHelp.document.close(); 

    }, 
    dataType: 'html' 
}); 
1

tôi đã thực hiện một plugin jQuery để làm điều này. Không phải là jQuery, nhưng của tôi là.

(function ($) { 
    $.submitFormToPopup = function (action, params, target, windowOpts) { 
     var formID = 'submitFormToPopup'; 
     var form = $('<form />') 
      .attr('method', 'post') 
      .attr('action', action) 
      .attr('target', target) 
      .attr('id', formID); 
     $.each(params, function (key, value) { 
      form.append($('<input />') 
       .attr('type', 'hidden') 
       .attr('name', key) 
       .attr('value', value)); 
     }); 
     $(document.body).append(form); 
     window.open('about:blank', target, windowOpts); 
     form.submit(); 
     $(document.body).remove('#' + formID); 
    }; 
})(jQuery); 
Các vấn đề liên quan