简体   繁体   English

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

[英]Receive multiple value from php file via ajax call

Below is my ajax call code. 下面是我的ajax调用代码。 I want to send one data in .php file via ajax call and want to get two values from .php file. 我想通过ajax调用在.php文件中发送一个数据,并希望从.php文件中获取两个值。 This two values I want to set in different 'input' tags whose id are 'course_name' and 'course_credit'. 这两个值我想在不同的'input'标签中设置,其id为'course_name'和'course_credit'。

Here my ajax call return correct value(real value from DB table) of 'course_name' input tag. 这里我的ajax调用返回'course_name'输入标记的正确值(来自DB表的实际值)。
But 'MY PROBLEM IS' the value of input tag whose id is 'course_credit' shows 'success'. 但'我的问题是'输入标签的值,其id为'course_credit'显示'成功'。 How can I get the correct value(real value from DB table) of id 'course_credit' ? 如何获取id' course_credit'的正确值(来自DB表的实际值)?

I have a 'select' tag which id is 'c_select' 我有一个'select'标签,其ID为'c_select'

HTML: HTML:

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

AJAX : 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 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();  
 ?>

AJAX code:- 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 code:- 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();   
?>

The success callback is Function( PlainObject data, String textStatus, jqXHR jqXHR ); 成功回调是Function(PlainObject数据,String textStatus,jqXHR jqXHR); http://api.jquery.com/jQuery.ajax/ http://api.jquery.com/jQuery.ajax/

php: PHP:

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

javascript: JavaScript的:

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

second arguement is the status of http request, you have to encode the answer, i suggest you JSON in your php 第二个争论是http请求的状态,你必须编码答案,我建议你在你的PHP JSON

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

and in your javascript 并在您的JavaScript中

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

this is not tested, but this is the way to do it 这没有经过测试,但这是实现它的方法

I'd suggest using JSON to encode the data you fetch from the database. 我建议使用JSON来编码从数据库中获取的数据。

Try changing your ajax call as follows: 尝试更改您的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']);
        }
    }); 
});

And your PHP as follows: 你的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();

I haven't tested this but I imagine it'd work for you. 我没有对此进行测试,但我认为它对你有用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM