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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过ajax调用从php文件中接收多个值相关的知识,希望对你有一定的参考价值。

下面是我的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();  
 ?>
答案

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();   
?>
另一答案

成功回调是Function(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);
}
另一答案
success: function(reply_data1,reply_data2){
    $('#course_name').val(reply_data1);
    $('#course_credit').val(reply_data2);
}

第二个参数是http请求的状态,你必须编码答案,我建议你在你的PHP中使用JSON

$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);
 }

这没有经过测试,但这是实现它的方法

另一答案

我建议使用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();

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

以上是关于通过ajax调用从php文件中接收多个值的主要内容,如果未能解决你的问题,请参考以下文章

PHP 从 Ajax 调用接收空的 $_POST 变量

PHP 如何从 AJAX 调用中发布多个数组/json 值并在同一个 SQL 查询中运行它们?

通过 for 循环和 php 数组进行多次插入(通过 jQuery AJAX 接收)

Ajax表单提交我想通过id更改表单元素的值,以便脚本从php中的返回值进行下一次调用

AJAX 成功调用仅从 JSON 字符串中获取一个值

jquery如何进行多个ajax调用[重复]