I'm doing some testing with ajax
, and I made a very simple script in php
shown below:
index.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$("select[name='nome']").change(function()
{
alert('Entrou');
var preco = $("input[name='preco']");
var teste = $("select[name='nome']").val();
//alert(teste);
$( preco ).val('Carregando...');
//$.getJSON(
//'function.php',
//{
// produto_id: $( "select[name='nome']" ).val()
//},
//function( json )
//{
// $( preco ).val( json.preco );
//}
$.ajax({
type: "GET",
dataType: 'json',
url: "function.php",
data: "produto_id="+ $("select[name='nome']").val(),
success: function(json){
//informacoesPessoa = pessoa.split("-");
//$("#nome").val(informacoesPessoa[0]);
//$("#dataNascimento").val(informacoesPessoa[1]);
alert(json.produto_preco);
$("input[name='preco']").val(json.produto_preco);
}
});
//);
});
});
</script>
</head>
<body>
<form action="" method="post">
<label>Produto: <select name="nome">
<option value="">--</option>
<?php
include 'function.php';
echo montaSelect();
?>
</select></label>
<label>Preço: <input name="preco" type="text" disabled="disabled" value="" /></label>
</form>
<div id="test"></div>
</body>
</html>
function.php
<?php
$con = mysql_connect('localhost', 'root', 'root');
mysql_select_db('vendas', $con);
/**
* função que retorna o select
*/
function montaSelect()
{
$sql = "SELECT 'produto_id', 'produto_nome' FROM 'produto' ";
$query = mysql_query( $sql );
if( mysql_num_rows( $query ) > 0 )
{
while( $dados = mysql_fetch_assoc( $query ) )
{
$opt .= '<option value="'.$dados['produto_id'].'">'.$dados['produto_nome'].'</option>';
}
}
else
$opt = '<option value="0">Nenhum produto cadastrado</option>';
return $opt;
}
/**
* função que devolve em formato JSON os dados do cliente
*/
function retorna( $id )
{
$id = (int)$id;
$sql = "SELECT 'produto_id', 'produto_preco' FROM 'produto' WHERE 'produto_id' = {$id} ";
$query = mysql_query( $sql );
$arr = Array();
$row = mysql_fetch_row($query);
$preco = $row[1];
//if( mysql_num_rows( $query ) )
//{
// while( $dados = mysql_fetch_object( $query ) )
// {
// $arr['produto_preco'] = $dados->produto_preco;
// }
//}
//else
// $arr[] = 'Produto: não encontrado';
echo json_encode($preco);
//return json_encode( $arr );
}
/* só se for enviado o parâmetro, que devolve o combo */
if( isset($_GET['produto_id']) )
{
echo retorna( $_GET['produto_id'] );
}
?>
When I access function.php
as follows:
http://localhost/testes/function.php?produto_id=1
It returns me on the screen the correct data: "2.50"
However, JavaScript
is not taking this value and displaying it in input . What am I missing?