Não consigo implementar calculo de frete

Enviada por Jonas 
Jonas
Não consigo implementar calculo de frete
24 de May de 2012 às 08:01PM
Bom pessoal, estou precisando muito de ajuda para implementar um calculo de frete em meu site, porem independente do pagseguro ou qualquer outro similar.

então encontrei um código que aparentemente é enxuto, são 4 partes que vou listar aqui. copiei os códigos para o Dreamweaver sendo calcularFrete.php, calculoFrete.html, ajax.js e calculoFrete.js.
No meu site, quando entro o cep de destino, ele não retorna o valor do frete. Já tentei de tudo, mas não sei onde mais mexer pra funcionar.

Se for possível peço ajuda para fazer este código funcionar.

cód. calcularFrete.php
<?php

// resgate das variáveis do formulário que aciona o frete
$srv = 40010;
$cepOrigem = $_GET["cepOrigem"];
$cepDestino = $_GET["cepDestino"];
$peso = $_GET["peso"];

// execução da URL dos correios
$url = "http://www.correios.com.br/encomendas/precos/calculo.cfm?servico=".$srv."&cepOrigem=".$cepOrigem."&cepDestino=".$cepDestino."&peso=".$peso."&MaoPropria=N&avisoRecebimento=N&resposta=xml";

// inicio a abertura da opção para o php
ini_set("allow_url_fopen", 1);
// captura as linhas da URL retornada
$fonte = file($url);

// cálculo do frete
foreach($fonte as $www) {
$bsc = "/\<preco_postal>(.*)\<\/preco_postal>/";
if (preg_match($bsc, $www, $retorno)) {
echo "R$ ".number_format($retorno[1], 2, ',', '.');
} // fim do if
} // fim do foreach



cód calculoFrete.js

// Script para a realização da Busca Instantanêa com Ajax
// Função para iniciar o Ajax no browser do cliente

function openAjax() {

var ajax;

try{
// XMLHttpRequest para browsers decentes, como: Firefox, Safari, dentre outros.
ajax = new XMLHttpRequest();
}catch(ee){
try{
// Para o IE da MS
ajax = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
// Para o IE da MS
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
ajax = false;
}
}
}
return ajax;
}

// Função que realiza a busca instantânea e posiciona em uma div na página principal
function calculoFrete() {
if( document.getElementById ) { // Para os browsers complacentes com o DOM W3C.


var cepOrigem = document.getElementById('cepOrigem').value;
var cepDestino = document.getElementById('cepDestino').value;
var peso = document.getElementById('peso').value;
// div que exibirá o resultado da busca.
var exibeResultado = document.getElementById('result');

// Verifica se o campo não está vazio, ou se foi digitado no mínimo nove caracteres.
if(cepOrigem !== "" && cepOrigem !== null && cepOrigem.length >= 9) {

// Inicia o Ajax.
var ajax = openAjax();

var URL = "calcularFrete.php?cepOrigem="+cepOrigem+"&cepDestino="+cepDestino+"&peso="+peso;
ajax.open("GET", URL, true);

ajax.onreadystatechange = function() {
// Quando estiver carregando, exibe: carregando...
if(ajax.readyState == 1) {
exibeResultado.innerHTML = "<span class='texto'>Calculando Frete...</span>";
}
// Quando estiver tudo pronto.
if(ajax.readyState == 4) {
if(ajax.status == 200) {
var resultado = ajax.responseText;
// Coloca o resultado (da busca) retornado pelo Ajax nessa variável (var resultado).
// Resolve o problema dos acentos (saiba mais aqui: http://www.plugsites.net/leandro/?p=4)
resultado = resultado.replace(/\+/g," ");
// Resolve o problema dos acentos
resultado = unescape(resultado);
exibeResultado.innerHTML = resultado;
} else {
exibeResultado.innerHTML = "<span class='text'>Erro realizando busca instantânea</span> ";
}
}
}
// submete
ajax.send(null);
}
}
}

cód ajax.js

// JavaScript Document
function ajax()
{
try {
return new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch(ex) {
try {
return new XMLHttpRequest();
} catch(exc) {
alert("Esse browser não tem recursos para uso do AJAX");
return false;
}
}
}
}

e por ultimo
cod calculoFrete.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Cálculo do Frete</title>

<!-- Simples css para formatar o resultado !-->
<style type="text/css">
<!--
.texto {font-family: Tahoma}
-->
</style>

<link href="texto" rel="stylesheet" type="text/css">
</head>

<!-- Arquivos JS que fazem parte do script !-->
<script language="javascript" src="js/ajax.js"></script>
<script language="javascript" src="js/calculoFrete.js"></script>


<body>
<form method="get" action="">
<table width="988" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="408">
CEP Destino:
<input name="cepDestino" type="text" id="cepDestino">
<input name="postok" type="button" id="postok" value="Calcular" onClick="calculoFrete();">
<input name="cepOrigem" type="hidden" id="cepOrigem" value="74830-130">
<input name="peso" type="hidden" id="peso" value="10"></td>
<td width="580"><div class="texto" id="result"></div></td>
</tr>
</table>
</form>
</body>
</html>

como orientação do desenvolvedor do código, coloquei os arquivos .js ema uma pasta nomeada js.

Espero conseguir ajuda com alguem aqui.
Obrigado.
Marcos Regis
Re: Não consigo implementar calculo de frete
24 de May de 2012 às 08:15PM
pode ser que tenha mudado alguma coisa no site dos correios e a classe parou de funcionar.

Dê uma lida nisso aqui.

http://www.correios.com.br/webServices/PDF/SCPP_manual_implementacao_calculo_remoto_de_precos_e_prazos.pdf
Jonas
Re: Não consigo implementar calculo de frete
24 de May de 2012 às 09:13PM
Ao copiar os arquivos .js, no dreamweaver devo cria a página jsp ou javascript?
poque nesse caso criei as paginas como jsp.
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.