获取url参数并使用ajax查询mysql数据

时间:2014-02-08 19:10:12

标签: php jquery mysql ajax json

我想从网址获取参数。网址如下所示:

  

www.example.com/?v=12345

我想获取参数并查询我的mysql数据库以使用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参数。

有人可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用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"));
    }
?>

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

答案 1 :(得分:0)

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

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