【问题标题】:Get data from link with jquery ajax使用 jquery ajax 从链接获取数据
【发布时间】:2018-10-16 10:01:34
【问题描述】:

我有以下链接;

www.example.com/profile.php?u=aaron

我想使用 ajax 获取 u= 以回显在我的数据库中以名称 aaron 保存的详细信息。但是,当我尝试使用我的 ajax 代码来实现这一点时,我最终会得到一个空白页面。

我的 AJAX 代码;

$(document).ready(function() {
    $.ajax({    
        type: "GET",
        url: "fetch.php",             
        data: "u=":usr,   
        success: function(d) {                    
             $("#detail").html(d); 
        }
    });
});

fetch.php;

<?php  
    // connect to db
    include 'db.php';

    if (isset($_GET['usr'])) {
        $user_query = "SELECT details FROM users_det WHERE name = ?";
        if ($stmt = mysqli_prepare($db_var, $user_query)) {
            mysqli_stmt_bind_param($stmt, "s", $_GET['usr']);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_bind_result($stmt, $details);
            while (mysqli_stmt_fetch($stmt)) {
                // fetch results
            }

            // close statement
            mysqli_stmt_close($stmt);
        }

        // echo user details
        echo $details;
    }
?>

我的 HTML 代码;

<div id="detail"></div>

以及我的 HTML 代码中的以下 PHP 代码;

  <?php 
    $user = preg_replace('#[^a-zA-Z0-9_.]#i','',$_GET['u']); 
    ?>

我想知道为什么 ajax 没有从链接中获取名称。

【问题讨论】:

  • 检查控制台,data: "u=":usr, 是语法错误。使用data: "u=" + usr,data: { u: usr },
  • 还是什么都没有。但在我的浏览器控制台中出现错误提示 ReferenceError: usr is not defined @RoryMcCrossan
  • 这意味着usr 未定义,或者不在您尝试使用它的范围内。您能否编辑问题以包含该代码。
  • 我刚刚添加了包含在我的 html 代码中的 php 代码。这就是我所有的代码@RoryMcCrossan

标签: php jquery ajax


【解决方案1】:

您的代码中有多个错误

首先你应该使用data: {u: usr}, 而不是data: "u=":usr,

$(document).ready(function() {
    $.ajax({    
        type: "GET",
        url: "fetch.php",             
        data: {u: usr},   
        success: function(d) {                    
             $("#detail").html(d); 
        }
    });
});

fetch.php 文件中的第二个你应该得到参数$_GET['u'] 而不是$_GET['usr']

<?php  
    // connect to db
    include 'db.php';

    if (isset($_GET['u'])) {
        $user_query = "SELECT details FROM users_det WHERE name = ?";
        if ($stmt = mysqli_prepare($db_var, $user_query)) {
            mysqli_stmt_bind_param($stmt, "s", $_GET['u']); //also change `usr` in this line
            mysqli_stmt_execute($stmt);
            mysqli_stmt_bind_result($stmt, $details);
            while (mysqli_stmt_fetch($stmt)) {
                // fetch results
            }

            // close statement
            mysqli_stmt_close($stmt);
        }

        // echo user details
        echo $details;
    }
?>

为了调试,您可以在 ajax 成功响应中使用 console.log(d)

【讨论】:

  • 我收到了错误表单控制台日志TypeError: 'stepUp' called on an object that does not implement interface HTMLInputElement.
  • 删除$("#detail").html(d); 这一行并写入console.log(d);并检查控制台日志中的输出
【解决方案2】:

首先用window.location.href获取完整的url,实例化一个url对象,然后通过javascript中的searchParams获取它的参数。

脚本:

var urlString = window.location.href; //www.example.com/profile.php?u=aaron
var url = new URL(urlString);
var usr = url.searchParams.get("u");

$(document).ready(function() {
    $.ajax({    
        type: "GET",
        url: "fetch.php",             
        data: "u="+usr,   
        success: function(d) {                    
             $("#detail").html(d); 
        }
    });
});

PHP:

<?php  
    // connect to db
    include 'db.php';

    if (isset($_GET['u'])) {
        $user_query = "SELECT details FROM users_det WHERE name = ?";
        if ($stmt = mysqli_prepare($db_var, $user_query)) {
            mysqli_stmt_bind_param($stmt, "s", $_GET['u']);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_bind_result($stmt, $details);
            while (mysqli_stmt_fetch($stmt)) {
                // fetch results
            }

            // close statement
            mysqli_stmt_close($stmt);
        }

        // echo user details
        echo $details;
    }
?>

【讨论】:

  • 我的 ajax 代码仍然没有得到u=。它在我的 php 代码中提供了一个错误,因为 php 代码无法$_GET['usr'];
  • 在你的 php 中应该是 $_GET['u'];
  • 是的,我的控制台日志中现在没有错误,但是 ajax 没有得到 u
  • console.log(d) 首先。你在你的 php 代码中正确定义了 $details 吗?
  • var_dump($_GET['u']); 放在 fetch.php 的顶部并验证您是否确实获得了价值。如果您获得了价值,则意味着您的 $details 根本不包含任何数据。
猜你喜欢
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多