【问题标题】:Get url parameter and query mysql data with ajax获取url参数并用ajax查询mysql数据
【发布时间】:2014-02-08 19:10:11
【问题描述】:

我想从一个 url 中获取一个参数。网址如下所示:

www.example.com/?v=12345

我想获取参数并查询我的mysql数据库以使用ajax获取正确的数据。

所以我在这里有我的 ajax 调用:

$.ajax({
type:"POST",
url:"ajax2.php",
dataType:"json",
success:function(response){
var id = response['id'];
var url = response['url'];
var name = response['name'];
var image = response['image'];
},
error:function(response){

alert("error occurred");
}
});

如您所见,我想要获取的数据在 json 数组中,并将保存在 javascript 变量中。

这是我的 php 文件:

 <?php

 // Connection stuff right here

 $myquery = "SELECT * FROM mytable **WHERE id= **$myurlvariable**;
 $result = mysql_query($myquery);
 while($row = mysql_fetch_object($result))
{
$currentid = "$row->id";
$currentname = "$row->name";
$currenturl = "$row->url";
$currentimage = "$row->image";
$array = array('id'=>$currentid,'url'=>$currenturl, 'name'=>$currentname,'image'=>$currentimage);

 echo json_encode($array);

}

?>

我要查询正确变量的部分以粗体显示。我不知道如何查询。此外,如何以正确的形式获取 url 参数。

有人可以帮忙吗?谢谢!

【问题讨论】:

  • 请不要使用mysql_* 函数,尤其是在您编写新代码时,它们已被弃用,并将从未来的 PHP 版本中删除。您的代码将停止工作。使用mysqli_* 或 PDO 对象并使用准备好的语句来防止 SQL 注入。

标签: php jquery mysql ajax json


【解决方案1】:

您可以使用 JavaScript 获取查询字符串并在 AJAX 请求中发送。

获取查询字符串(JavaScript) -

function query_string(variable)
{
   var query = window.location.search.substring(1);
   var vars = query.split("&");
   for (var i=0;i<vars.length;i++) {
           var pair = vars[i].split("=");
           if(pair[0] == variable){return pair[1];}
   }
   return(false);
}
//Getting the parameter-
v = query_string('v');  // Will return '12345' if url is www.example.com/?v=12345

这需要在 AJAX 调用中作为数据传递。

$.ajax(
    {
        type:       "POST",
        dataType:   "json",
        url:        "ajax2.php",
        data:       "v="+v,
        success:    function(response){
                        var id = response['id'];
                        var url = response['url'];
                        var name = response['name'];
                        var image = response['image'];
                    },
        error:      function(jqXHR,textStatus,errorThrown){
                    //alert(JSON.stringify(jqXHR));
                    //alert(textStatus);
                    //alert(errorThrown);
                    alert(JSON.stringify(jqXHR)+" "+textStatus+" "+errorThrown);
                    //alert("error occurred");
                }
    }
);

这可以通过 php 表单中的 $_POST['v'] 访问。

if(isset($_POST['v'])){
$myurlvariable = $_POST['v'];
$myquery = "SELECT * FROM mytable WHERE id= $myurlvariable";
...

在 php 形式中,在回显 json 响应之前,更改内容类型。像这样-

header("Content-Type: application/json");
echo json_encode($array);

如果存在数据库错误,则必须对其进行处理。 所以这样做 -

<?php
    // Connection stuff right here
    header("Content-Type: application/json");
    if(isset($_POST['v'])){
        $myurlvariable = $_POST['v'];
        $myquery = "SELECT * FROM mytable WHERE id= $myurlvariable";
        $result = mysql_query($myquery) or die(json_encode(Array("error": mysql_error()));
        while($row = mysql_fetch_object($result))
        {
            $currentid = "$row->id";
            $currentname = "$row->name";
            $currenturl = "$row->url";
            $currentimage = "$row->image";
            $array[]= array('id'=>$currentid,'url'=>$currenturl, 'name'=>$currentname,'image'=>$currentimage);
        }
        echo json_encode($array);
    }else{
        echo json_encode(Array("error": "No POST values"));
    }
?>

这样,如果查询没有正确执行,那么你就会知道究竟是什么错误。

【讨论】:

  • 错误:SELECT * FROM mytable WHERE id=
  • 应该是 $myurlvariable = $_GET['v'];而不是 $_POST['v'] = $myurlvariable; ?
  • 好像是数据库错误。检查编辑。我添加了对 mysql_query 的检查,并且在您的 ajax 调用中,检查错误:函数(...)
  • 不,它不会是 $GET_['v'] 因为在您的 AJAX 调用中,您通过输入 type: 'POST' 来发出 POST 请求
  • 尝试在进行 ajax 调用之前提醒该值,并在 php 文件中回显该值。
【解决方案2】:

没有任何错误检查,只是重要的部分:

$myquery = "SELECT * FROM mytable WHERE id=" . $_POST['v'];

【讨论】:

  • 你的意思是 $_GET['v'] ?因为它是一个 URL 参数
猜你喜欢
  • 2017-02-01
  • 2018-05-29
  • 1970-01-01
  • 2018-03-04
  • 2017-09-13
  • 1970-01-01
  • 2011-03-24
  • 2020-03-08
  • 1970-01-01
相关资源
最近更新 更多