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

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/24715018/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-28 03:16:49  来源:igfitidea点击:

Receive multiple value from php file via ajax call

javascriptphpjqueryajax

提问by user3817516

Below is my ajax call code. I want to send one data in .php file via ajax call and want to get two values from .php file. This two values I want to set in different 'input' tags whose id are 'course_name' and 'course_credit'.

下面是我的ajax调用代码。我想通过 ajax 调用在 .php 文件中发送一个数据,并想从 .php 文件中获取两个值。我想在不同的“输入”标签中设置这两个值,它们的 id 是“course_name”和“course_credit”。

Here my ajax call return correct value(real value from DB table) of 'course_name' input tag.
But 'MY PROBLEM IS' the value of input tag whose id is 'course_credit' shows 'success'. How can I get the correct value(real value from DB table) of id 'course_credit' ?

这里我的 ajax 调用返回了“course_name”输入标签的正确值(来自 DB 表的实际值)。
但是“我的问题是”id 为“course_credit”的输入标签的值显示“成功”。如何获得 id 'course_credit' 的正确值(来自数据库表的实际值)?

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 :

阿贾克斯:

$('#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();  
 ?>

回答by WisdmLabs

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

回答by ThomasP1988

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

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

回答by Raven

The successcallback is Function( PlainObject data, String textStatus, jqXHR jqXHR );http://api.jquery.com/jQuery.ajax/

成功回调 函数(PlainObject数据,字符串textStatus,jqXHR jqXHR); 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);
}

回答by Hexus

I'd suggest using JSONto 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.

我还没有测试过这个,但我想它对你有用。