Foros del Web » Programando para Internet » Javascript » Frameworks JS »

method POST en diferente dominio

Estas en el tema de method POST en diferente dominio en el foro de Frameworks JS en Foros del Web. Hola, mi pregunta es la siguiente: Tengo un pequeño formulario que debe interactuar con un archivo php mediante el metodo POST. El archivo php esta ...
  #1 (permalink)  
Antiguo 09/11/2006, 20:01
 
Fecha de Ingreso: marzo-2005
Mensajes: 171
Antigüedad: 19 años, 9 meses
Puntos: 0
method POST en diferente dominio

Hola, mi pregunta es la siguiente:
Tengo un pequeño formulario que debe interactuar con un archivo php mediante el metodo POST. El archivo php esta en otro servidor. Probe con una solucion que dieron en otro foro de usar un archivo php asi:

Código PHP:
<?
$a
=$_REQUEST["URL"];
echo 
file_get_contents($a);
?>
Pero no me funciono. Tambien probe utilizando un proxy simple en php, pero tampoco funciono.
Cualquiera de estas dos soluciones me permite acceder al archivo php del segundo dominio, pero parece que las variables se pierden en el camino. La pagina ejecuta bien, pero no se que les pasa a las variables que estoy pasando por el formulario porque desaparecen.
Les voy a poner el codigo del formulario y el del proxy

Pagina con el formulario:

Código PHP:
<html>
<
head>
<
title>Paso de variables por metodo GET</title>
</
head>

<
script language="javascript">
function 
crearAjax()
{
    var 
xmlhttp=false;
     try
    {
      
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (
e)
    {
        try
        {
               
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          }
        catch (
E)
        {
               
xmlhttp false;
          }
     }

    if (!
xmlhttp && typeof XMLHttpRequest!='undefined')
    {
          
xmlhttp = new XMLHttpRequest();
    }
    return 
xmlhttp;
}


function 
Contenido()
{
    var 
url;
    var 
t1t2content;



// The web services request minus the domain name
var path '.../ej_ajax.php';

// The full path to the PHP proxy
var url 'http://.../...../proxy.php?yws_path=' encodeURIComponent(path);



    
content document.getElementById('content');
    
    
//Cargar en variables los valores del formulario
    
t1 document.getElementById('aa').value;
    
t2 document.getElementById('11').value;


    
//Crear objeto de AJAX
    
ajax=crearAjax();
   
    
//Enviar información por el metodo POST
ajax.open("POST",url,true);
   
ajax.onreadystatechange=function()
    {
        if (
ajax.readyState==4)
        {
            
content.innerHTML ajax.responseText
        
}
    }
    
ajax.setRequestHeader('Content-Type''application/x-www-form-urlencoded');
    
ajax.send("t1="+t1+"&t2="+t2)
}

window.onload= function()
{   
    
Contenido()
}
</script>

<style type="text/css">
#content{
border: 1px solid #336699;
padding: 10px;
margin: 14px;
}
</style>

<body>



<form onSubmit="Contenido(); return false">
<div><INPUT type=text name=aa value="aaaaa"/></div>
<div><INPUT type=text name=11 value="11111" /> </div>

</form>

DIV donde se muestra la información enviada:
<div id="content"></div>

</body>
</html> 
Pagina con el archivo PHP:

Código PHP:
<?php
echo "Datos enviados por el método POST: <pre>";
print_r($_POST); //Muestra todas la variables POST y sus valores
echo "</pre>";
?>
Pagina del PROXY:

Código PHP:
<?php
// PHP Proxy example for Yahoo! Web services. 
// Responds to both HTTP GET and POST requests
//
// Author: Jason Levitt
// December 7th, 2005
//

// Allowed hostname (api.local and api.travel are also possible here)
define ('HOSTNAME''http://www......com.ar/');

// Get the REST call path from the AJAX application
// Is it a POST or a GET?
$path = ($_POST['yws_path']) ? $_POST['yws_path'] : $_GET['yws_path'];
$url HOSTNAME.$path;

// Open the Curl session
$session curl_init($url);

// If it's a POST, put the POST data in the body
if ($_POST['yws_path']) {
    
$postvars '';
    while (
$element current($_POST)) {
        
$postvars .= key($_POST).'='.$element.'&';
        
next($_POST);
    }
    
curl_setopt ($sessionCURLOPT_POSTtrue);
    
curl_setopt ($sessionCURLOPT_POSTFIELDS$postvars);
}

// Don't return HTTP headers. Do return the contents of the call
curl_setopt($sessionCURLOPT_HEADERfalse);
curl_setopt($sessionCURLOPT_RETURNTRANSFERtrue);

// Make the call
$xml curl_exec($session);

// The web service returns XML. Set the Content-Type appropriately
header("Content-Type: text/xml");

echo 
$xml;
curl_close($session);

?>

Les agradezco cualquier ayuda que me puedan dar
Saludos
  #2 (permalink)  
Antiguo 10/11/2006, 17:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 171
Antigüedad: 19 años, 9 meses
Puntos: 0
Gente no hay problema, ya lo solucione usando el mismo proxy pero en vez de usar los comandos ajax, use comandos xmlhttp que encontre dando vueltas por internet. Si alguno quiere la solucion, que me avise por este medio asi lo posteo.
Muchisimas gracias a todos los que me ayudaron y se tomaron su tiempo para responder
  #3 (permalink)  
Antiguo 11/11/2006, 12:33
 
Fecha de Ingreso: marzo-2005
Mensajes: 171
Antigüedad: 19 años, 9 meses
Puntos: 0
NOOOOOOOOOOOOOOOOOOOO
Otra vez yo. No me funciono nada de nada.
Gente, no me funciona con POST, que es lo que preciso, unicamente con GET.
le voy a postear el nuevo codigo que tengo del archivo html

Código PHP:
<script type="text/javascript">

// The web services request minus the domain name
var path 'web/mipagina.php';

// The full path to the PHP proxy
var url 'proxy.php?yws_path=' encodeURIComponent(path);

// Cross platform xmlhttprequest

// Create xmlhttprequest object
var xmlhttp null;
if (
window.XMLHttpRequest) {
        
xmlhttp = new XMLHttpRequest();
        
//make sure that Browser supports overrideMimeType
        
if ( typeof xmlhttp.overrideMimeType != 'undefined') { xmlhttp.overrideMimeType('text/xml'); }
} else if (
window.ActiveXObject) {
        
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}  else {
        
alert('Perhaps your browser does not support xmlhttprequests?');
}

// Create an HTTP GET request
xmlhttp.open('POST'urltrue);



xmlhttp.setRequestHeader('Content-Type''application/x-www-form-urlencoded');
xmlhttp.send('santi=2');


// Set the callback function
xmlhttp.onreadystatechange = function() {
        if (
xmlhttp.readyState == && xmlhttp.status == 200) {
                
// Output the results
                  
alert(xmlhttp.responseText);
        } else {
                  
// waiting for the call to complete
        
}
    };

// Make the actual request


</script> 
Lo unico que estoy haciendo para probar es enviar una sola variable y no me llega. El proxy sigue siendo el mismo y el archivo php que imprime las variables que recibe tambien sigue siendo el mismo.
POR FAVOOOOOOOOOOOOOOOOOR QUE ALGUIEN ME AYUDE.
Gracias

EDIT: GENTE, DESCUBRI CUAL ES EL PROBLEMA. EL PROXY DE MEIRDA ESE. LO PROBE CON EL ARCHIVO EN EL MISMO SERVER Y FUNCIONA LO MAS BIEN...
Lo raro es que el proxy tiene unos comandos para redirigir los "POST", pero se ve que no funcionan. Yo no se que es lo que pasa porque no tengo ni idea de programacion.
Algun experto que me provea de alguna ayuda.
Gracias otra vez

Última edición por Bkwxs; 11/11/2006 a las 12:50 Razón: Encontre algo mas
  #4 (permalink)  
Antiguo 12/11/2006, 22:02
 
Fecha de Ingreso: marzo-2005
Mensajes: 171
Antigüedad: 19 años, 9 meses
Puntos: 0
Bueno, finalmente me vuelvo a contestar a mi mismo.
Perdonen los moderadores que postee tantas veces, pero quiero dejar en claro como lo solucione, ya que les puede servir a otras personas.
Los que pasaba es que desaparecian las variables en el metodo POSY por culpa del proxy. No se porque, cuando una de las variables que se pasaban por el POST tenia valor 0 o "" (nada), ninguna de las variables pasaba. Y si alguna tiene el valor "null", tiraba un error. El problema lo solucione pidiendo que los campos de texto nunca esten vacios, no es la mejor solucion, pero es lo maximo que puedo hacer (ya que no se como arreglar el codigo).
Saludos y espero que le sirva a alguien
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:16.