John Hebert Trindade Posted February 6, 2024 at 07:09 PM Report #632715 Posted February 6, 2024 at 07:09 PM adaptei o projeto abaixo em meu projeto: https://youtu.be/m49I783h_9s?si=xmEknj6biQexrGJh só que devolve seguinte erro, penso que o erro esteja no javascript: Uncaught (in promise) SyntaxError: Unexpected token '<', " <!DOCTYPE "... is not valid JSON await (assíncrono) onkeyup @ index:215 meu java esta assim: async function searchProdutos(registo){ // Receber a URL do HTML const urlAdm = document.getElementById('url-adm').getAttribute('data-url-adm'); //recebe o valor que o usuário digitar const codigoBarras = document.querySelector('#codigo_barras'+registo); //Recebe o value da const codigoBarras const valueCodigoBarras = codigoBarras.value; // Verificar se o campo tem 7 digitos if (valueCodigoBarras.length == 7) { //faz a requisição ao file add-receber-encomenda.php const response = await fetch(urlAdm + 'add-receber-encomenda/index?searchCodigo=' + valueCodigoBarras); //Ler os dados retornado do PHP const data = await response.json(); if(data['erro']) { document.getElementById('adms_produto_id').innerHTML = data['msg']; }else{ document.getElementById("adms_produto_id").innerHTML = ""; document.getElementById("adms_produto_id").value = data['response'].produto; } } } na controler tenho: //Receber o codigo de barras do produto $searchCodigo = filter_input(INPUT_GET, "searchCodigo", FILTER_SANITIZE_NUMBER_INT); if (!empty($searchCodigo)) { $listProduct = new \App\adms\Models\stock\AdmsAddReceberEnc(); $listProduct->searchProduto($searchCodigo); $retorna = ['erro' => false, 'dados' => $listProduct]; } else { $retorna = ['erro' => true, 'msg' => "<div class='alert alert-danger'>Nenhum Produto encontrado!</div>"]; } na model tenho: public function searchProduto($codigoBarras = null) { $this->data['codigo_barras'] = $codigoBarras; $listProduto = new \App\adms\helpers\AdmsRead(); $listProduto->fullRead("SELECT id, produto, codigo_barras, venda, stock FROM adms_produtos WHERE codigo_barras =:codigo_barras LIMIT :limit", "codigo_barras={$this->data['codigo_barras']}&limit=1"); $this->resultBd = $listProduto->getResult(); if ($this->resultBd) { $retorna = ['erro' => false, 'dados' => $this->resultBd]; } else { $retorna = ['erro' => true, 'msg' => "<p style='color: #f00'>Erro: Nenhum Produto encontrado!</p>"]; } }
Cerzedelo Posted February 7, 2024 at 08:50 AM Report #632716 Posted February 7, 2024 at 08:50 AM Em 06/02/2024 às 19:09, John Hebert Trindade disse: adaptei o projeto abaixo em meu projeto: https://youtu.be/m49I783h_9s?si=xmEknj6biQexrGJh só que devolve seguinte erro, penso que o erro esteja no javascript: Uncaught (in promise) SyntaxError: Unexpected token '<', " <!DOCTYPE "... is not valid JSON await (assíncrono) onkeyup @ index:215 meu java esta assim: async function searchProdutos(registo){ // Receber a URL do HTML const urlAdm = document.getElementById('url-adm').getAttribute('data-url-adm'); //recebe o valor que o usuário digitar const codigoBarras = document.querySelector('#codigo_barras'+registo); //Recebe o value da const codigoBarras const valueCodigoBarras = codigoBarras.value; // Verificar se o campo tem 7 digitos if (valueCodigoBarras.length == 7) { //faz a requisição ao file add-receber-encomenda.php const response = await fetch(urlAdm + 'add-receber-encomenda/index?searchCodigo=' + valueCodigoBarras); //Ler os dados retornado do PHP const data = await response.json(); if(data['erro']) { document.getElementById('adms_produto_id').innerHTML = data['msg']; }else{ document.getElementById("adms_produto_id").innerHTML = ""; document.getElementById("adms_produto_id").value = data['response'].produto; } } } na controler tenho: //Receber o codigo de barras do produto $searchCodigo = filter_input(INPUT_GET, "searchCodigo", FILTER_SANITIZE_NUMBER_INT); if (!empty($searchCodigo)) { $listProduct = new \App\adms\Models\stock\AdmsAddReceberEnc(); $listProduct->searchProduto($searchCodigo); $retorna = ['erro' => false, 'dados' => $listProduct]; } else { $retorna = ['erro' => true, 'msg' => "<div class='alert alert-danger'>Nenhum Produto encontrado!</div>"]; } na model tenho: public function searchProduto($codigoBarras = null) { $this->data['codigo_barras'] = $codigoBarras; $listProduto = new \App\adms\helpers\AdmsRead(); $listProduto->fullRead("SELECT id, produto, codigo_barras, venda, stock FROM adms_produtos WHERE codigo_barras =:codigo_barras LIMIT :limit", "codigo_barras={$this->data['codigo_barras']}&limit=1"); $this->resultBd = $listProduto->getResult(); if ($this->resultBd) { $retorna = ['erro' => false, 'dados' => $this->resultBd]; } else { $retorna = ['erro' => true, 'msg' => "<p style='color: #f00'>Erro: Nenhum Produto encontrado!</p>"]; } } Verifique se de facto está a retornar um JSON, veja nas ferramentas de programador do seu browser, o erro é explícito o response não é um JSON válido, logo ou existe um erro no JSON, aquele símbolo '<', ou o retorno não é um ficheiro JSON, parece mais ser um HTML. Se está a fazer uma busca dos registos na BD, é pouco provável que venham no formato JSON, se necessitar nesse formato antes de os chamar no javascript tem de fazer o encode dos mesmos para json.
John Hebert Trindade Posted February 8, 2024 at 09:10 PM Author Report #632731 Posted February 8, 2024 at 09:10 PM mas se digito directo na URL aparece me isso: custom_adms.js:1024 Response {type: 'basic', url: 'http://swaf.pt/add-receber-encomenda/index?searchCodigo=5600001', redirected: false, status: 200, ok: true, …} body: (…) bodyUsed: true headers: Headers {} ok: true redirected: false status: 200 statusText: "OK" type:"basic" url:"http://swaf.pt/add-receber-encomenda/index?searchCodigo=5600001" [[Prototype]]: Response e acho que o status 200 é porque deu certo, ou estou errado?
Solution Cerzedelo Posted February 9, 2024 at 03:04 PM Solution Report #632732 Posted February 9, 2024 at 03:04 PM Em 08/02/2024 às 21:10, John Hebert Trindade disse: mas se digito directo na URL aparece me isso: custom_adms.js:1024 Response {type: 'basic', url: 'http://swaf.pt/add-receber-encomenda/index?searchCodigo=5600001', redirected: false, status: 200, ok: true, …} body: (…) bodyUsed: true headers: Headers {} ok: true redirected: false status: 200 statusText: "OK" type:"basic" url:"http://swaf.pt/add-receber-encomenda/index?searchCodigo=5600001" [[Prototype]]: Response e acho que o status 200 é porque deu certo, ou estou errado? A resposta da requisição até pode ser bem sucedida, dando o código 200, mas a resposta pode não ser um Json. No javascript está a dizer que a resposta é um Json, mas o que vem do php, provavelmente não é um json, mas sim texto. Esta situação dará erro, de invalid json. Nas ferramentas de programador do seu browser, suponhamos no caso do firefox, vá à aba rede, e verifique qual o tipo da requisição, se é html, json, js, etc. Se a requisição que indicou devolver o codigo 200 e o tipo for json, então o erro estará na apresentação dos dados, caso contrário, se o tipo for outro, significa que não pode dizer ao javascript que o response é um json. O que normalmente é feito, no php como no exemplo, em que atribui os resultados da pesquisa a uma variável dados, imediatamente após é feito um json_encode desses dados e então é enviado esse json para a solicitação. 1 Report
John Hebert Trindade Posted February 22, 2024 at 11:31 PM Author Report #632826 Posted February 22, 2024 at 11:31 PM A resposta não era um json, era o html todo
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now