Jump to content
Luciano Silveira Marco

Retorno assincrono encadeando promessas

Recommended Posts

Pessoal, boa noite!

 

Gostaria de ver a possibilidade de implementar o "Encadeando promessas" neste código, de modo em que eu possa atribuir o retorno da funcão CalculaDistancia para alguma variável, o "xtalk" é o valor que eu preciso, mas só consigo utilizar dentro da função, preciso deste valor atribuído:

var xvar = CalculaDistancia(xxxxxx,xxxxxx);

O resultado desta função já vem de um encadeamento que consegui fazer rodar olhando exemplos, só que agora preciso subir mais um nível conforme descrevi.

Agradeço quem puder ajudar ou tiver alguma idéia.

function testadistancia() {          
          CalculaDistancia(mapcord[0].varlat+','+mapcord[0].varlon,mapcord[1].varlat+','+mapcord[1].varlon)
          .done(function(response){
                var origins = response.originAddresses;
                for (var i = 0; i < origins.length; i++) {
                     var results = response.rows[i].elements;
                     for (var j = 0; j < results.length; j++) { 
                          var xtroca = substituiVirgula(results[j].distance.text);
                          xtalk=parseFloat(xtroca);
                          alert(xtalk);
                      }
                }
          })         
        }

Share this post


Link to post
Share on other sites

você nunca vai ser capaz de fazer isso:

var xvar = CalculaDistancia(xxxxxx,xxxxxx);
porque é algo assincrono.

Encadear promessas vai melhorar a legibilidade do código, mas não vai te dar a possibilidade de atribuir, porque é assíncrono.

Share this post


Link to post
Share on other sites

Você não precisa realmente atribuir. Você pode sim trabalhar com um sistema assíncrono sem isso.

 

Faça um callback:

 

function testadistancia(callback) {
  CalculaDistancia(mapcord[0].varlat+','+mapcord[0].varlon,mapcord[1].varlat+','+mapcord[1].varlon)
  .done(function(response){
        var origins = response.originAddresses;
        for (var i = 0; i < origins.length; i++) {
             var results = response.rows[i].elements;
             for (var j = 0; j < results.length; j++) {
                  var xtroca = substituiVirgula(results[j].distance.text);
                  xtalk=parseFloat(xtroca);
                  callback(null, xtalk);
              }
        }
  })
}
ai você usa:

 testadistancia(function(err, xtalk){
   alert(xtalk);
});
Note que deixei o primeiro argumento como err, porque esse é um padrão bem aceito na comunidade.

 

Agora você só precisa ver se é realmente isso, porque está dentro de 2 loops ali.

O resultado esperado deveria ser o que? um array?

Share this post


Link to post
Share on other sites

 

 

Bruno, estou tentando fazer a implementação conforme seu código, e como eu não expliquei o formato em que está o array que preciso organizar, no final do exemplo do seu código eu acredito que está modificando os valores de origem da array e não a ordem:

o array de coordenada que tenho é mapcord{('varlat': xxxxxxx, 'varlon':xxxxx)}

esse array é preenchido aleatoriamente por coordenadas de endereços, logo preciso otimizar esta rota, então utilizo uma função que que retorna a distancia entre duas coordenadas partindo sempre da posição 0, então a idéia é manter o modelo do array mas trocar as posições conforme proximidade preservando somente a posição 0 que é base.

 

Aqui está o modelo que você sugeriu e tentei implementar, mas aparece um erro informando que a propriedade 'varlat' não existe, porque acredito que ela está sendo mudada no processo, confere?

function reoganizaproximos() {
      for(var i = 0; i < mapcord.length - 1; i++){
      var disMinima=[];
      disMinima.push({'index':0, 'distancia':0});
      for(var f = i + 1; f < mapcord.length; f++){
      testadistancia(function(err, xtalk, i, f){
		var distancia = xtalk;

		if(distancia < disMinima.distancia){
			disMinima.index = f;
			disMinima.distancia = distancia;
		}
	   });	
	 }

	 if(disMinima.index !== i + 1){

		var mapcordTemp = mapcord[i + 1];

		mapcord[i + 1] = mapcord[disMinima.index];
		mapcord[disMinima.index] = mapcordTemp;
	 }
      }
      
     }

Share this post


Link to post
Share on other sites

Putz... não cara.. isso tá muito complicado.

Veja, como é um array, deveríamos chamar o callback uma única vez, fora do loop:

 

function testadistancia(callback) {
  CalculaDistancia(mapcord[0].varlat+','+mapcord[0].varlon,mapcord[1].varlat+','+mapcord[1].varlon)
  .done(function(response){
        var origins = response.originAddresses;
        var talks = [];
        for (var i = 0; i < origins.length; i++) {
             var results = response.rows[i].elements;
             for (var j = 0; j < results.length; j++) {
                  var xtroca = substituiVirgula(results[j].distance.text);
                  xtalks.push(parseFloat(xtroca));

              }
        }
        callback(null, xtalks);//chamar aqui
  })
}
entende?

 

Assim no retorno do callback você tem um array, e ele será chamado uma única vez, quando terminar todo o loop.

 

Eu ainda estou um pouco perdido com o que isso faz e como faz, mas analisando só o fluxo, isso aqui:

 

 if(disMinima.index !== i + 1){
está fora de onde deveria, porque essa variável só existe dentro do callback lá em cima.

 

 

Além disso, outro loop? putz.. acho que você não precisa desse outro.

 

Tem alguma chance de escrevermos cenários de testes para o que você quer fazer?

E dai sim, implementarmos ?

Share this post


Link to post
Share on other sites

Putz... não cara.. isso tá muito complicado.

Veja, como é um array, deveríamos chamar o callback uma única vez, fora do loop:

 

function testadistancia(callback) {
  CalculaDistancia(mapcord[0].varlat+','+mapcord[0].varlon,mapcord[1].varlat+','+mapcord[1].varlon)
  .done(function(response){
        var origins = response.originAddresses;
        var talks = [];
        for (var i = 0; i < origins.length; i++) {
             var results = response.rows[i].elements;
             for (var j = 0; j < results.length; j++) {
                  var xtroca = substituiVirgula(results[j].distance.text);
                  xtalks.push(parseFloat(xtroca));

              }
        }
        callback(null, xtalks);//chamar aqui
  })
}
entende?

 

Assim no retorno do callback você tem um array, e ele será chamado uma única vez, quando terminar todo o loop.

 

Eu ainda estou um pouco perdido com o que isso faz e como faz, mas analisando só o fluxo, isso aqui:

 

 if(disMinima.index !== i + 1){
está fora de onde deveria, porque essa variável só existe dentro do callback lá em cima.

 

 

Além disso, outro loop? putz.. acho que você não precisa desse outro.

 

Tem alguma chance de escrevermos cenários de testes para o que você quer fazer?

E dai sim, implementarmos ?

 

Claro, deixa eu tentar explicar ver se consigo sintetizar:

 

Conforme mencionei tenho um entrada de endereços que são transformados em coordenadas e inseridas num array chamado "mapcord{(varlat:xxxxx, varlon:xxxx)}" e tenho uma função chamada "testadistancia" que me devolve um valor float de distancia quando informo duas coordenadas.

Então o que eu preciso é uma função que organize as coordenadas (endereços) em sequência de menor distância partindo de A quem é mais perto, digamos que D, e quem é mais perto de D, digamos que B e quem é mais perto de B..... ou seja o array só preserva a posição 0 que é a base e as outras se organizam conforme distância, vou postar o código a partir do array já formado e quem sabe se conseguir reformular, porque não consegui achar uma forma ainda pela minha pouca experiência em javascript.

function reoganizaproximos() {
      for(var i = 0; i < mapcord.length - 1; i++){
      var disMinima=[];
      disMinima.push({'index':0, 'distancia':0});
      for(var f = i + 1; f < mapcord.length; f++){
      testadistancia(function(err, xtalk, i, f){
		var distancia = xtalk;

		if(distancia < disMinima.distancia){
			disMinima.index = f;
			disMinima.distancia = distancia;
		}
	   });	
	 }

	 if(disMinima.index !== i + 1){

		var mapcordTemp = mapcord[i + 1];

		mapcord[i + 1] = mapcord[disMinima.index];
		mapcord[disMinima.index] = mapcordTemp;
	 }
      }
      
 }



function testadistancia(callback) {
        CalculaDistancia(mapcord[i].varlat+','+mapcord[i].varlon,mapcord[f].varlat+','+mapcord[f].varlon)
        .done(function(response){
        var origins = response.originAddresses;
        for (var i = 0; i < origins.length; i++) {
             var results = response.rows[i].elements;
             for (var j = 0; j < results.length; j++) {
                  var xtroca = substituiVirgula(results[j].distance.text);
                  xtalk=parseFloat(xtroca);
                  callback(null, xtalk);
              }
         }
         })
 }

         function substituiVirgula(campo) {
         campo = campo.replace(/,/gi, ".");
         return campo;
         }
     
           function CalculaDistancia(pt1, pt2) { 
                var service = new google.maps.DistanceMatrixService(); 
                var d = $.Deferred();
                service.getDistanceMatrix(
                  { 
                      origins: [pt1], 
                      destinations: [pt2], 
                      travelMode: google.maps.TravelMode.DRIVING, 
                      unitSystem: google.maps.UnitSystem.METRIC,
                      avoidHighways: false,
                      avoidTolls: false
					},   
					 function(response, status){
                      if (status != google.maps.DistanceMatrixStatus.OK) {
                         d.reject(status);
                      } else {
                         d.resolve(response);
                      }
                   });
                   return d.promise(); 
            }

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By brendow
      Pessoal, preciso urgentemente de fazer um relatório, mas não consigo fazer de jeito nenhum... Será que poderiam me ajudar?
       
      Possuo a tabela geral tb_turg que guarda os registros assim:
       
      idmodg: 13 (codigo do módulo)
      codturg: 101 (código da turma)
      iniclasg: 2020-01-13 (data de inicio)
      terclasg: 2020-02-21 (data de termino)
      weekg: 1,3,5 (dias da semana que tem curso, neste caso: segunda, quarta e sexta)
       
      Cada aluno possui uma tabela. O aluno id 1 possui a tabela tb_z1 e guarda os registros assim:
       
      idcur      | codtur               | diafrq
      13           | 101                     | 2020-01-13
      13           | 101                     | 2020-01-17
      13           | 101                     | 2020-01-20
      13           | 101                     | 2020-01-22
      13           | 101                     | 2020-01-29
      13           | 101                     | 2020-01-31
      13           | 101                     | 2020-02-03
      13           | 101                     | 2020-02-05
      13           | 101                     | 2020-02-07
      etc...
       
      Como calcular:
      Quantos dias e quais os dias da tabela tb_turg da data de inicio (iniclasg) até a data de término (terclasg), mas somente nos dias especificados na semana (weekg), que seriam
       
      2020-01-13, 2020-01-15, 2020-01-17,
      2020-01-20, 2020-01-22, 2020-01-24,
      2020-01-27, 2020-01-29, 2020-01-31,
      2020-02-03, 2020-02-05, 2020-02-07,
      2020-02-10, 2020-02-12, 2020-02-14,
      2020-02-17, 2020-02-19, 2020-02-21,
      Daria: 18 DIAS
       
      Quantos dias de frequência teve o aluno id 1
      09 DIAS (por exemplo)
       
      Obtido os dados, deve-se verificar:
      Quantos dias de FALTA obteve o aluno id 1?
       
      Preciso gerar um relatório passando o código do módulo (13) e o código da turma (101) via GET. Alguém pode me ajudar? Obrigado
      Seria mais ou menos assim que deveria ficar (imagem anexo)

    • By marirocha95
      Olá pessoal, boa tarde.
       
      Alguém pode me ajudar no formulário PHP abaixo.
      Eu não entendo quase nada de programação, peguei um template HTML5 gratuito na internet, e meu formulário não está funcionando.
      Um colega me enviou o formulário php abaixo, mas não consegui editar.
       
      Obrigada!
       
      CONTÉM DENTRO DO ARQUIVO: index.html

            <div class="contact-form">
              <div class="container">
                <div class="section-header">          
                  <h2 class="section-title">Contato</h2>
                  <span>Contato</span>
                  <p class="section-subtitle">Entre em contato comigo adorarei te ajudar com o seu projeto.</p>
                </div>
                <div class="row">          
                  <div class="col-lg-9 col-md-9 col-xs-12">
                    <div class="contact-block">
                      <form id="contactForm">
                        <div class="row">
                          <div class="col-md-6">
                            <div class="form-group">
                              <input type="text" class="form-control" id="name" name="name" placeholder="Seu nome" required data-error="Por favor insira seu nome">
                              <div class="help-block with-errors"></div>
                            </div>                                 
                          </div>
                          <div class="col-md-6">
                            <div class="form-group">
                              <input type="text" placeholder="Seu e-mail" id="email" class="form-control" name="name" required data-error="Por favor insira seu e-mail">
                              <div class="help-block with-errors"></div>
                            </div> 
                          </div>
                          <div class="col-md-12">
                            <div class="form-group">
                              <input type="text" placeholder="Assunto" id="msg_subject" class="form-control" required data-error="Por favor insira o assunto">
                              <div class="help-block with-errors"></div>
                            </div>
                          </div>
                          <div class="col-md-12">
                            <div class="form-group"> 
                              <textarea class="form-control" id="message" placeholder="Sua mensagem" rows="7" data-error="Digite a sua mensagem" required></textarea>
                              <div class="help-block with-errors"></div>
                            </div>
                            <div class="submit-button">
                              <button class="btn btn-common btn-effect" id="submit" type="submit">Enviar mensagem</button>
                              <div id="msgSubmit" class="h3 hidden"></div> 
                              <div class="clearfix"></div> 
                            </div>
                          </div>
                        </div>            
                      </form>
                    </div>
                  </div>
      -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                     CONTÉM DENTRO DO ARQUIVO JAVA SCRIPT: contact-form-script.js
       
      $("#contactForm").validator().on("submit", function (event) {
          if (event.isDefaultPrevented()) {
              // handle the invalid form...
              formError();
              submitMSG(false, "Você preencheu o formulário corretamente?");
          } else {
              // everything looks good!
              event.preventDefault();
              submitForm();
          }
      });

      function submitForm(){
          // Initiate Variables With Form Content
          var name = $("#name").val();
          var email = $("#email").val();
          var msg_subject = $("#msg_subject").val();
          var message = $("#message").val();

          $.ajax({
              type: "POST",
              url: "php/form-process.php",
              data: "name=" + name + "&email=" + email + "&msg_subject=" + msg_subject + "&message=" + message,
              success : function(text){
                  if (text == "success"){
                      formSuccess();
                  } else {
                      formError();
                      submitMSG(false,text);
                  }
              }
          });
      }
      function formSuccess(){
          $("#contactForm")[0].reset();
          submitMSG(true, "Message Submitted!")
      }
      function formError(){
          $("#contactForm").removeClass().addClass('shake animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
              $(this).removeClass();
          });
      }
      function submitMSG(valid, msg){
          if(valid){
              var msgClasses = "h3 text-center tada animated text-success";
          } else {
              var msgClasses = "h3 text-center text-danger";
          }
          $("#msgSubmit").removeClass().addClass(msgClasses).text(msg);
      }
       

               -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                     CONTÉM DENTRO DO ARQUIVO PHP: form-process.php
       
      <? 
      $pmensagem = "----\r\n"; 
      foreach ($_POST as $pcampo => $pvalor) { $pmensagem .= strtoupper($pcampo) . " : " . $pvalor . "\r\n\r\n"; } 
      // NAO ALTERE OS DADOS ACIMA 
      # ALTERE OS DADOS ABAIXO 
      // endereco do servidor de smtp de seu site 
      $smtp_servidor = "mail.seudominio.com.br";  
        
      // conta de email que vai autenticar no servidor de smtp 
      $smtp_email = "mail.seudominio.com.br"; 
      // senha da conta de email que vai autenticar no servidor de smtp 
      $smtp_senha = "SenhaDoEmail"; 
      // conta de email que vai receber as informacoes digitadas no formulario 
      $emaildedestino = "email@seudominio.com.br";
      $message = "Nome: $name\n\nE-mail: $email\n\nAssunto: $msg_subject\n\nMensagem: $message";
      mail("$msg");
      // NAO ALTERE OS DADOS ABAIXO 
      $pmensagem .= "----\r\n"; 
      $pmensagem .= "Sender-IP: ".$_SERVER["REMOTE_ADDR"]."\r\n"; 
      $cMail = new COM("Persits.MailSender"); 
      $cMail->Host = $smtp_servidor; 
      $cMail->Username = $smtp_email; 
      $cMail->Password = $smtp_senha; 
      $cMail->From = $emaildedestino; 
      $cMail->FromName = "Mariana Santos"; 
      $cMail->AddAddress($emaildedestino); 
      $cMail->Subject = "CONTATO VIA FORMULARIO DO SITE: ".$_SERVER["HTTP_HOST"];
      $cMail->Body = $pmensagem; 
      $urldestino=$urlfalha; 
      if (strpos($_SERVER["HTTP_REFERER"],$_SERVER["HTTP_HOST"])) { if ($cMail->Send()) { $urldestino=$urlsucesso; } } 
      // NAO ALTERE OS DADOS ACIMA 
      ?>
    • By adriano.eurich
      cadastro.php <?php session_start(); include_once 'includes/header.inc.php'; include_once 'includes/menu.inc.php'; ?> <!-- Formulário de Cadastro Cliente --> <div class="row container"> <form action="banco_de_dados/create.php" method="post" class="col s12"> <fieldset class="formulario" style="padding: 1px;"> <legend><!--<img src="imagens/CadCli.png" alt="[imagem]" style="width:40x; height:40px">--></legend> <br> <?php if(isset($_SESSION['msg'])): echo $_SESSION['msg']; session_unset(); endif; ?> <!-- Campo Nome --> <div class="input-field col s12"> <i class="material-icons prefix">account_circle</i> <input type="text" name="nome" id="nome" maxlength="40" required autofocus> <label for="nome">Nome</label> </div> <!-- Campo Instituição --> <div class="input-field col s12"> <i class="material-icons prefix">account_balance</i> <input type="text" name="inst" id="inst" maxlength="40" required autofocus> <label for="inst">Instituição</label> </div> <!-- Campo Telefone --> <div class="input-field col s12"> <i class="material-icons prefix">phone</i> <input type="text" name="telefone" id="telefone" maxlength="13" required> <label for="telefone">Telefone</label> </div> <!-- Campo Chave --> <div class="input-field col s12"> <i class="material-icons prefix">vpn_key</i> <input type="text" name="chave" id="chave" maxlength="4" required> <label for="chave">Chave</label> </div> <!-- Botões --> <div class="input-field col s12"> <input type="submit"style="width:120px; height:37px" value="cadastrar" class="btn blue"> <input type="reset" style="width:120px; height:37px" value="limpar" class="btn red"> </div> </fieldset> </form> </div> <?php include_once 'includes/script.inc.php';?> ------------------------- create.php <?php session_start(); include_once 'conexao.php'; $id = $_POST [ 'id' ]; $nome = $_POST [ 'nome' ]; $inst = $_POST [ 'inst' ]; $data = date('y-m-d'); $telefone = $_POST [ 'telefone' ]; $chave = $_POST [ 'chave' ]; $queryInsert = $link->query("insert into tb_cadastro VALUES ('".$id."', '".$nome."','".$inst."','".$data."','".$telefone."','".$chave."')"); $affected_rows = mysqli_affected_rows($link); if($affected_rows > 0): $_SESSION['msg'] = "<p class='center green-text'>".'Cadastrado com Sucesso!'."<br>"; header("Location: ../cadastro.php"); endif; --------------- relatorio.php <?php session_start(); include_once 'includes/header.inc.php'; include_once 'includes/menu.inc.php'; ?> <!-- Formulário de Cadastro Cliente --> <div class="row container"> <p>&nbsp;</p> <form action="banco_de_dados/consulta_rel.php" method="post" class="col s12"> <fieldset class="formulario" style="padding: 3px"> <legend><img src="imagens/relatorio.png" alt="[imagem]" style="width:55px; height:45px"></legend> <br> <?php if(isset($_SESSION['msg'])): echo $_SESSION['msg']; session_unset(); endif; ?> <!-- Campo Data --> <div class="input-field col s12"> <i class="material-icons prefix">event_available</i> <input type="date" name="datainicial" id="data" maxlength="10" required> <label for="data">Data Inicial</label> </div> <div class="input-field col s12"> <i class="material-icons prefix">event_busy</i> <input type="date" name="datafinal" id="data" maxlength="10" required> <label for="data">Data Final</label> </div> <!-- Botões --> <div class="input-field col s12"> <input type="submit"style="width:120px; height:37px" value="Gerar" class="btn blue"> <input type="reset" style="width:120px; height:37px" value="limpar" class="btn red"> </div> </fieldset> </form> </div> <?php include_once 'includes/footer.inc.php';?> <?php include_once 'includes/script.inc.php'; ----------------- arquivo_rel.php ?> <!-- Formulário de Cadastro Cliente --> <div class="row container"> <p>&nbsp;</p> <fieldset class="formulario" style="padding: 5px"> <legend><img src="imagens/relatorio.png" alt="[imagem]" style="width:55px; height:45px"></legend> <br> <?php if(isset($_SESSION['msg'])): echo $_SESSION['msg']; session_unset(); endif; ?> <table class="highlight" > <thead> <tr> <th>Nome</th> <th>Instituição</th> <th>Data</th> </tr> </thead> </table> </fieldset> </div> <?php include_once 'includes/footer.inc.php';?> <?php include_once 'includes/script.inc.php'; --------------- consulta_rel.php <?php session_start(); include_once 'conexao.php'; $datainicial = $_POST [ 'datainicial' ]; $datafinal = $_POST [ 'datafinal' ]; $sql= "select * from tb_cadastro where data between '$datainicial' and '$datainicial'"; $consulta_rel = mysqli_query($link, $sql); echo "sql"; if($consulta_rel) { ////// $_SESSION['msg'] = "<p class='center green-text'>".'Devolução efetuada com Sucesso!'."<br>"; header("Location: ../arquivo_rel.php"); exit(); } Alguma dica de como eu posso, mostrar os dados do cadastro, quando abro a pagina relatório e coloco as datas para consulta
    • By dlucas2002
      Bom dia, estou querendo calcular a distância entre dois pontos(ponto1 e ponto2) no google maps, alguém pode me ajudar?Já tenho os dois pontos representados por marcadores e a rota, só falta a distância entre eles.Conferi a bibliografia atual do google maps sobre Distance Matrix mas ela não tem nenhum código que funcionasse pra esse meu problema específico.
       
       
      <!DOCTYPE html> <html>   <head>     <style>        /* Set the size of the div element that contains the map */       #map {         height: 400px;  /* The height is 400 pixels */         width: 100%;  /* The width is the width of the web page */        }     </style>   </head>   <body>     <div id="map"></div>     <script>                  function initMap() {             var directionsService = new google.maps.DirectionsService();             var directionsRenderer = new google.maps.DirectionsRenderer();               var ponto1 = new google.maps.LatLng(-5.577833,-36.913061);;             var ponto2 = new google.maps.LatLng(-22.934894,-47.060696);                var map = new google.maps.Map(document.getElementById('map'), {zoom: 4, center: ponto2});             directionsRenderer.setMap(map);                var marker = new google.maps.Marker({position: ponto1, map: map});             var marker1 = new google.maps.Marker({position: ponto2, map: map});               var request = {                 origin: ponto1,                 destination: ponto2,                 travelMode: 'DRIVING'             };             directionsService.route(request, function(result, status) {                 if (status == 'OK') {                 directionsRenderer.setDirections(result);                 }             });                     }                </script>            <script async defer     src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB9RfaC0_ixdYkUQokkZqO93mzvLBCrvr4&callback=initMap">     </script>   </body> </html>
    • By TheRonaldoStar
      Olá, eu atualmente estou com um projeto de fazer um script para fazer compras e vendas automáticas de Bitcoin pelo mercado Bitcoin!.
      Mas estou tendo um erro pertinente à semanas mas só agora tive a ideia de vim pedir ajuda aqui no fórum. Me ajudem por favor.
      Eu estou me deparando com este erro através do console:
       
      Access to XMLHttpRequest at 'https://www.mercadobitcoin.net/tapi/v3/' from origin 'http://localhost' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
       
      Meu código usado para fazer a requisição via Ajax
      $.ajax({ type: ("POST"), dataType: ("json"), url: ("https://www.mercadobitcoin.net/tapi/v3/"), headers: { "Content-Type": ("application/x-www-form-urlencoded") }, data: { tapi_method: ("list_orders"), tapi_nonce: (1) }, complete: function (data){ console.log(data); } });  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.