Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

soulindo

Webservice PHP

Recommended Posts

Boas,

Eu tou a tentar criar um webservice que faz uma chamada a uma api via ajax e me devolve o array ja tratado mas ele nao me esta a passar a variável para o lado do cliente o que poderá estar mal alguém me pode ajudar?

 

Server

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.js"	type="text/javascript">	</script>
<script>
	var line_points = new Array;
	var line_points2 = new Array;
	function ponts (lat1,long1,lat2,long2) {
	$.ajax({

		url : "https://graphhopper.com/api/1/route?point.....",
	        type : "GET",
		async: true,
		dataType : "json",
		success : function(keydata) {
		// Create array of lat,lon points
		var arr = new Array;
		var line_points = new Array;
		var data = keydata.paths[0].points.coordinates;
		for (var prop in data) {
		arr.push(data[prop]);
		}
		for (var alt in arr) {
		var arr2 = new Array;
		arr2.push(arr[alt][1]);
		arr2.push(arr[alt][0]);
		line_points.push(arr2);
		}
		console.log("Ajax");
		console.log(line_points);
	line_points2=line_points;
							
	}});

return line_points2;
}
</script>
<?php

$server = new SoapServer(null, array('uri' => "http://localhost:8888/soap/"));  
	  function getpoints($lat1 , $long1, $lat2, $long2) {
		echo '<script type="text/javascript">ponts('.$lat1.','.$long1.','.$lat2.','.$long2.');
		</script>';
$x = "<script>document.write(line_points2)</script>";
return $x ;
}

$server->addFunction("getpoints");
if ($_SERVER["REQUEST_METHOD"]== "POST") {
		$server->handle();
} else {
	$functions = $server->getFunctions();
	foreach ($functions as $func) {
		print $func. "<br>";
	}
}
?>

Cliente

<?php
$client = new SoapClient(null, array(
	'location' => 'http://localhost:8888/soap3/server.php',  
	'uri' => 'http://localhost:8888/soap/',  		
	'trace' => 1));
$result = $client->getpoints("41.695242","-8.84232","41.69489","-8.833072"); 
		 if (is_soap_fault($result)){
	echo trigger_error("SOAP Fault: (faultcode: {$result->faultcode},
	faultstring: {$result->faulstring})", E_ERROR);
}
else{
	print_r($result);	
}
?>

Obrigado .

Compartilhar este post


Link para o post
Compartilhar em outros sites

O seu servidor WS deve processar tudo pelo PHP, nada de JS. JS é executado no navegador. E como a requisição SOAP não envolve navegador, o JS não será processado

 

Caso queira usar JSON, existem as funções json_encode e json_decode. Elas trabalham bem com arrays, se é esse o objetivo do seu WS

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja consegui o problema que me esta a matar a cabeça agora e que nao consigo passar as variaveis do javascript para o php sabes o que posso tar a fazer mal ?

	                                lat1 = ponto.lat;
					long1 = ponto.lng;
					alert(lat1 + ' ,' + long1);
					i = i + 1;
				} else {
					lat2 = ponto.lat;
					long2 = ponto.lng;
					alert(lat2 + ' ,' + long2);
					<?php
						$lat1 ="<script>" . 'document.write(lat1);' ."</script>"; 
						$long1 ="<script>" . 'document.write(long1);' ."</script>"; 
						$lat2 ="<script>" . 'document.write(lat2);' ."</script>"; 
						$long2 ="<script>" . 'document.write(long2);' ."</script>"; 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está misturando as coisas: PHP é processado no servidor. Javascript é processado no navegador do cliente.

O que você está fazendo é a mesma coisa que exibir o JS direto, sem criar essas variáveis PHP.

 

Se você quer que o PHP receba valores dinâmicos do JS, precisará usar Ajax ou fazer requisições novas para o PHP.

 

Leia mais sobre linguagens server-side e client-side, para entender melhor

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.