Banco de Dados de Consulta através de Javascript / PHP

Estou tendo problemas ao tentar retornar resultados de um script PHP, de volta ao meu aplicativo HTML / Jquery.

Atualmente, estou tentando se conectar ao servidor da seguinte forma:

function getDatabaseRows() { var xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() { if(xmlHttp.readyState == 4) { HandleResponse(xmlHttp.responseText); } } xmlHttp.open("POST", "myDomain.com/subDirectory/getRowCounts.php", true); xmlHttp.send(null); } 

Com meu manipulador de resposta sendo:

 function HandleResponse(response) { alert(response.length); if(response.length != 0) maxArray = JSON.parse(response); storage.set('currentID', maxArray); } 

Atualmente, sempre que executo o código, getDatabaseRows() sempre acaba chamando HandleResponse(response) . O problema é que o response.length é sempre igual a 0 .

O script PHP é simplesmente coletar a contagem máxima de linhas do database e retornar as contagens de linha:

  

Quando eu aponto meu navegador diretamente para o script, é a contagem de linhas correta para mim. Estou tendo problemas para tentar obter dados por meio do AJAX.

EDITAR:

Ok, finalmente consegui conectar o script, tinha algo a ver com problemas de script entre domínios. Tudo resolvido agora.

Novo problema embora:

 function HandleResponse(response) { if(response.length != 0) maxArray = JSON.parse(response); storage.set('currentID', maxArray); } 

HandleResponse lança um erro ao analisar o Error trying to parse '<' JSON Error trying to parse '<' , então presumo que tenha algo a ver com a maneira como a matriz foi codificada. Como faço para solucionar esse problema e descobrir como analisar esse array?

Eu iria verificar o seguinte método de conexão.

http://api.jquery.com/jQuery.get/

Isso resolverá todos os seus problemas e limpará seu código

Esta é uma amostra de um dos meus códigos antigos

  $.ajax({ data: "id=" + value, type: "POST", url: "unlock.php", success: function (data) { if (data == 1 || data == true) { var result = true; } else { var result = false; } } }); 

Este é o jQuery JavaScript mais simples para o qual eu consegui baixar (isso usa o método GET):

 function getDatabaseRows() { $.getJSON('myDomain.com/subDirectory/getRowCounts.php', function(data) { console.log(data); }); } 

Documentação em http://api.jquery.com/jQuery.getJSON/

E algumas melhorias no seu PHP usando foreach {} e mysql_result() , embora você possa querer olhar para a class mysqli do PHP para uma solução mais preparada para o futuro.

 $rowCounts = array(); $dbhost = 'host'; $dbuser = 'host'; $dbpass = 'host'; $dbase = 'host'; $fields = array( 'MaxTID' => array('tab' => 'TransData', 'col' => 'TID'), 'MaxSID' => array('tab' => 'FullData', 'col' => 'SID'), 'MaxFID' => array('tab' => 'SalamanderData', 'col' => 'FID'), 'MaxOID' => array('tab' => 'OthersData', 'col' => 'OID') ); $con = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql'); mysql_select_db($dbase, $con) or die(mysql_error()); foreach ($fields as $id => $info) { $sql = "SELECT MAX({$info['col']}) FROM {$info['tab']}"; $result = mysql_query($sql, $con); if (!$result) die('Could not query:' . mysql_error()); $rowCounts[$id] = mysql_result($result, 0); } echo json_encode($rowCounts); mysql_close($con); 

Este código funcionou em um site hospedado pelo GoDaddy. Para o registro, esta é minha primeira resposta de estouro de pilha. Por favor informar 🙂