通过ajax调用从php文件中接收多个值

时间:2014-07-12 16:33:20

标签: javascript php jquery ajax

下面是我的ajax呼叫代码。我想通过ajax调用在.php文件中发送一个数据,并希望从.php文件中获取两个值。这两个值我想在不同的'input'标签中设置,其id为'course_name'和'course_credit'。

这里我的ajax调用返回'course_name'输入标记的正确值(来自DB表的实际值) 但'我的问题是'输入标签的值,其id为'course_credit'显示'成功'。如何获取id' course_credit'的正确值(来自DB表的实际值)?

我有一个'select'标签,其ID为'c_select'

HTML:

<input type="text" name="course_name" id="course_name" value=""/>
<input type="text" name="course_credit" id="course_credit" value=""/>

AJAX:

$('#c_select').change(function(){
    $.ajax({
        type:'post',
        url:'get_course_info_db.php',
        data: 'c_id='+ $(this).val(),                 
        success: function(reply_data1,reply_data2){
            $('#course_name').val(reply_data1);
            $('#course_credit').val(reply_data2);
        }
    }); 
});

get_course_info_db.php

<?php 
       include('db_connection.php'); 
       $c_id = $_POST['c_id'];
       $result = mysql_query("SELECT * FROM course WHERE c_id = '$c_id'"); 
       $all_course_data = mysql_fetch_array($result);
       $c_name = $all_course_data['c_name'];
       $c_credit = $all_course_data['c_credit']; 
       echo $c_name,$c_credit;
       exit();  
 ?>

4 个答案:

答案 0 :(得分:5)

AJAX代码: -

$('#c_select').change(function(){
    $.ajax({
        type:'post',
        url:'get_course_info_db.php',
        data: 'c_id='+ $(this).val(),                 
        success: function(value){
            var data = value.split(",");
            $('#course_name').val(data[0]);
            $('#course_credit').val(data[1]);
        }
    }); 
  });

PHP代码: -

<?php 
     include('db_connection.php'); 
     $c_id = $_POST['c_id'];
     $result = mysql_query("SELECT * FROM course WHERE c_id = '$c_id'"); 
     $all_course_data = mysql_fetch_array($result);
     $c_name = $all_course_data['c_name'];
     $c_credit = $all_course_data['c_credit']; 
     echo $c_name.",".$c_credit;
     exit();   
?>

答案 1 :(得分:2)

成功回调是功能(PlainObject数据,String textStatus,jqXHR jqXHR); http://api.jquery.com/jQuery.ajax/

php:

$data = array(
    'name' => $c_name,
    'credit' => $c_credit,
);
echo json_encode($data);

的javascript:

success: function(data) {
    var result = $.parseJSON(data);
    $('#course_name').val(result.name);
    $('#course_credit').val(result.credit);
}

答案 2 :(得分:1)

success: function(reply_data1,reply_data2){
    $('#course_name').val(reply_data1);
    $('#course_credit').val(reply_data2);
}

第二个争论是http请求的状态,你必须编码答案,我建议你JSON 在你的PHP

$c_credit = $all_course_data['c_credit']; 
echo json_encode(array('name' => $c_name,'credit' => $c_credit));
exit(); 

并在您的javascript中

 success: function(response,status){
     var datas = JSON.parse(response);
     $('#course_name').val(datas.name);
     $('#course_credit').val(data.credit);
 }

这未经过测试,但这是做到这一点的方法

答案 3 :(得分:0)

我建议使用JSON对从数据库中提取的数据进行编码。

尝试更改您的ajax调用,如下所示:

$('#c_select').change(function(){
    $.ajax({
        type:'post',
        url:'get_course_info_db.php',
        data: 'c_id='+ $(this).val(),
        dataType: 'json', // jQuery will expect JSON and decode it for you
        success: function(reply_data){
            $('#course_name').val(reply_data['c_name']);
            $('#course_credit').val(reply_data['c_credit']);
        }
    }); 
});

你的PHP如下:

include('db_connection.php'); 
// Escape your input to prevent SQL injection!
$c_id = mysql_real_escape_string($_POST['c_id']); 
$result = mysql_query("SELECT * FROM course WHERE c_id = '$c_id'"); 
$all_course_data = mysql_fetch_array($result);
echo json_encode($all_course_data);
exit();

我没有对此进行测试,但我认为它对你有用。