如何使用jquery AJAX

时间:2016-05-17 05:05:12

标签: javascript php jquery json ajax

我花了好几个小时(也许几天)才解决这个问题。我知道之前已经问过这个问题,但是对于我的初学者经验水平来说,答案总是那么模糊。我会喜欢一些特定和简化的代码示例。

我正在向changeDate.php提交一个AJAX调用。

的index.html

$(document).on("click", "#day-left", function(event){
    changeDate = changeDate - 1;

    $.ajax({
            type: "POST",
            url: "changeDate.php",
            data: {
                amount: changeDate,
                loginName: "benjamin_lawson"
            },

            success: function(data) {
            $("#date").html(data);
            }
        });
    });

此页面收到ajax。使用数据更新SQL并使用数据创建24个变量($ hour1,$ hour2,$ hour3 ...)。

changeDate.php

<?php
$amount = $_POST['amount'];
$user = $_POST['loginName'];
//server information variables

$dateName = date("mdY", strtotime("+" . $amount . " day"));


$conn = new mysqli($servername, $username, $password, $dbname);

for ($x = 1; $x <= 24; $x++) {
    $sql = "SELECT `$dateName` FROM `$user` WHERE hour='$x'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
         while($row = $result->fetch_assoc()) {
             ${"hour" . $x} = $row[$dateName];
         }
    }
    }
//this creates 24 variables with all my information I want sent 
//through my call back. ($hour1, $hour2, $hour3,...)

如何在保留变量名称和变量数据的回调中将这些变量传递回我的第一页?

我看到了一个相关的问题,他们回答说:

相关问题和答案 ......潜在解决方案

  

您可以使用json_encode()返回任意多个变量。

     

试试你的PHP:

<?php
echo json_encode(array($num1, $num2));
?>
You can add to that array , $num3, $num4, ... and so on.
  

在您的JS中,您可以按如下方式访问每个号码。

     

首先,您将需要这行代码来解析编码的JSON字符串,在&gt; &GT;你的成功功能。

     

var result = $ .parseJSON(output);

     

将结果设置为JSON对象。现在,您可以访问&gt;中的所有字段结果:

     

result [0] - PHP中的$ num1   结果[1] - PHP中的$ num2

如果有人能在代码中向我展示我需要做些什么才能完成这项工作,我真的很感激。非常感谢你!

3 个答案:

答案 0 :(得分:0)

这里我用json编码数据。

 $.ajax({
        type:"POST",
        async: false,
        url:"finance/getdataq",
        dataType: "json",
        data: data,      
        success: function(data){
// you can access your data variables like data['ukeydt'];
         $("."+targetval).find('.qrwordfol').html(data['ukeydt']);
         $("."+targetval).find('img').attr('src',data['ukeyqr']); 
         $("."+targetval).show();
         return false;  
        },
        error: function (data) {
            getd="";
        }
    });

和我的PHP代码

    public function getdataq()
     {
      $data = array();
     $data['ukeydt'] = "this is first";
     $data['ukeyqr'] = "this is second";
     echo json_encode($data);
     exit(); 

    }

答案 1 :(得分:0)

您可以使用包含所有小时数值的数组。

在changeDate.php中

    $amount = $_POST['amount'];
$user = $_POST['loginName'];
//server information variables

$dateName = date("mdY", strtotime("+" . $amount . " day"));


$conn = new mysqli($servername, $username, $password, $dbname);

for ($x = 1; $x <= 24; $x++) {
    $sql = "SELECT `$dateName` FROM `$user` WHERE hour='$x'";
    $result = $conn->query($sql);
    $response_arr = array();

    if ($result->num_rows > 0) {
         while($row = $result->fetch_assoc()) {
             $response_arr['hour' . $x] = $row[$dateName];
         }
    }
    }


echo json_encode($response_arr);
     exit();
    //this creates 24 variables with all my information I want sent 
    //through my call back. ($hour1, $hour2, $hour3,...)

$response_arr$response_arr['hour1']...$response_arr['hour24'],您可以在success: function(data)

中使用此数组
success: function(data) {
        console.log(data);
        }

您将获得data

中的所有数据

答案 2 :(得分:0)

每个答案都告诉我们使用php的JSON编码。而你需要另一个答案,尽管已经存在一个问题。

从php开始,您可以返回您想要的任何数据。你可以给一个字符串,或直接HTML或一些格式化的数据,如xml或JSON。

无论来自该请求的回应/打印是什么都是回应。您可以直接从URL或AJAX执行该请求。如果请求满足先决条件,它将显示相同的响应。

现在,如果您只是回显任何数据,那么JS没有结构,可能您必须格式化并解析它以从中提取有意义的数据。

但JSON和XML是知识数据传输语言。 XML很好,但需要在客户端进行服务器和基于元素的检索的结构化(可能有许多有效的方法,我不知道;因为我不是XML的粉丝)。对于JSON,您在服务器端有编码和解码方法,JavaScript就像它的哥哥一样。

现在你如何形成一个JSON?您只需将数组或对象传递给json_encode,它将返回JSON字符串。 echo该字符串和您的回复已准备就绪。

因此,我将使用@ Poonam的代码;我也做了一些优化:

$amount = $_POST['amount'];
$user = $_POST['loginName'];

//server information variables
$dateName = date("mdY", strtotime("+" . $amount . " day"));

$conn = new mysqli($servername, $username, $password, $dbname);

for ($x = 1; $x <= 24; $x++) {

}

// fill an array from 1 to 24 with steps of 1
// http://php.net/manual/en/function.range.php
$x = range(1, 24, 1);

$sql = "SELECT `$dateName`, hour FROM `$user` WHERE hour IN ('". implode( "', '", $x ) ."')";
$result = $conn->query($sql);
$response_arr = array();

if ($result->num_rows > 0) {
     while($row = $result->fetch_assoc()) {
         $response_arr['hour' . $row->hour] = $row[$dateName];
     }
}

echo json_encode($response_arr);
exit(0);
//this creates 24 variables with all my information I want sent

在AJAX的成功回调中,如果未将内容类型称为JSON.parse(),请使用application/json