2012-02-03 14 views
6

Estoy tratando de publicar datos con jQuery en una aplicación asp.net en una ventana emergente.asp.net/jQuery: publique datos con jQuery en una ventana emergente [IE]

Si se abre la ventana emergente, recibo tres errores. El primer error es:

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

(código de error [es el código de sitio popup]: http:. //www.suckmypic.net/26449/e65f2d77.png, orig código [es el código de popup sitio]: http: //www.suckmypic.net/26450/7dfdf013.png)

entonces obtengo two errors de funciones privadas que están incluidas correctamente.

Luego, si estoy recargando la ventana emergente, todo funciona bien.

puedo abrir la ventana emergente de esta manera:

$.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(); 
}); 

(se almacena en una función que estoy llamando al pulsar la tecla F1 que está trabajando muy bien)

estoy haciendo referencia en la página principal y en la ventana emergente todas mis funciones y la biblioteca jquery.

Editar

El código para el 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 son números calculados, basándose en tamaño de la ventana)

Si I cámbielo simplemente a 'width=600,height=400', aún se produce el error.

Si envío mis variables a través de get, también funciona, pero necesito ocultar las variables en la URL.

Método de trabajo get:

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

Otra edición: cromo Sólo probamos y Firefox - ningún error allí. Pero necesito el código para trabajar con IE.

+0

en la línea de brujas, ¿recibe el primer error? – Aristos

+0

línea 2 (la línea 1 está vacía) –

+0

Te he perdido, ¿puedes señalar esto en el código? – Aristos

Respuesta

2

Ante todo gracias por las respuestas.

He intentado todas las respuestas, pero sigo recibiendo los errores en Internet Explorer.

He encontrado una solución alternativa, pero no me hace feliz porque creo que generar un nuevo formulario con campos de entrada es demasiado para mis necesidades.

Dado que es la única opción de trabajo para publicar mis datos en una ventana emergente sin obtener el error jQuery, he decidido usarlo.

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); 

fuente original: http://taswar.zeytinsoft.com/2010/07/08/javascript-http-post-data-to-new-window-or-pop-up/

2

Dedique un tiempo para abrir el window antes de acceder a él. Prueba esto.

$.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

no quita mis errores :( –

0

Parece que le falta jQuery in popup.aspx. Asegúrate de que esté incluido.

+0

favor leer el post de salida más cuidadoso –

1

Supongo que la biblioteca jquery se está cargando en ambas páginas.

Y también se han incluido $ .post en $ (function() {} .......

$ .post función abreviada de $.ajax, por lo que funciona como asincrónico. Sugiero que sea sincrónico si es posible.

+0

es así, ¿cómo hacer que Traté:?. función myFunction() { '$ ('# myform') presentar (función() { window.open ('popup.aspx', 'help', cStyle); $ ('# myForm'). Target = 'ayuda'; }); $ ('# myForm'). Submit (); } ' Cuando estoy presionando' F1' (estoy llamando a mi función de esta manera como lo había descrito), se abre una ventana, pero en el siguiente segundo la página principal se recarga. –

+0

use $ .ajax en su lugar de $ .post http://api.jquery.com/jQuery.post/ – Rohit

1

probar esto:

$.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

hice un plugin de jQuery para hacer esto. No tiene que ser jQuery, pero el mío sí.

(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); 
Cuestiones relacionadas