$ .ajax查询未发布到PHP

时间:2014-06-13 05:31:46

标签: php jquery mysql ajax

我今天花了很多时间尝试将jQuery变量发送到我的PHP文件并在SQL搜索中使用它。我的第一个问题是,甚至无法将变量正确地转换为PHP。我也收到了关于我的一些SQL代码的错误。

我想要的:jQuery中的变量名为name发送到PHP文件,在SQL文件中使用它来查找音乐家的真实姓名。然后,真实姓名将被发送回HTML文件,并在网页上显示。 MyPHPAdmin和我的数据库已经设置完毕。

jQuery的:

$('li').click(function () {
    var name = $(this).text(); 

    $('#prf').attr("class",name);
    $('#pic').attr("class",name);
    $('#info').attr("class",name);
    JSON.stringify (name);
     $.ajax({
    type: "POST",
    url: "ajax-name.php",
    data: {name: name}
            })

PHP:

$rname = $_POST['name']; 
var_dump($rname); 
try {
    $db = new PDO('mysql:dbname=dbname;host=myhost;charset=utf8', 'user', 'pass');

    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $query="SELECT realname FROM artistmaster WHERE stagename = :name";
            $stmt = $db->prepare($query);
            $stmt->execute(array("name"=>$rname));    
        var_dump($rname);
        echo 'Success';            
        $result=$stmt->fetchAll();
            print "<pre>";
            print_r($result);
            print "</pre>";         
        }

        catch(PDOExeception $e)
        {
            echo $e->getMessage();
        }

输出:

NULL NULL 

我已阅读$.ajax()上的文档,但仍然无法弄清楚我做错了什么。我很感激任何帮助,它给了你一点时间。

3 个答案:

答案 0 :(得分:0)

试试这个:

   $.ajax({
       type: "POST",
       url: "ajax-name.php",
       data: {name: name},
       success : function(html) {
        // html code, do something with it here
       }
    });

然后

$rname = $_POST['name'];
$query="SELECT realname FROM artistmaster WHERE stagename = :name";
        $stmt = $db->prepare($query);
        $stmt->execute(array("name"=>$rname));   

您可以使用

获得结果
$stmt->fetchAll();

您无法使用mysqli

检索PDO驱动程序结果

答案 1 :(得分:0)

要从AJAX请求评估PHP脚本的输出,请为您的请求添加一个返回处理程序:

$.ajax({
    type: "POST",
    url: "ajax-name.php",
    data: {name: name}
            }).always(function( html ) {
    console.log(html); // this will show the content of the php script in the developer console of your browser
  });

每次AJAX请求完成时,都会调用.always()中定义的函数。当您确保代码有效时,您可以将其更改为.done(),这仅在AJAX调用成功时调用。您还可以添加.failure()函数来优雅地处理错误。

另请注意此from the documentation

  

$ .ajax()函数是jQuery发送的所有Ajax请求的基础。通常不必直接调用此函数,因为有几个更高级别的替代方法,如$ .get()和.load(),并且更易于使用。

我建议改为使用$.post功能:

$.post("ajax-name.php", {name: name}, function( html ) {
    $('#outputdiv').html(html);
    // this will replace the content of a <div id="outputdiv"></div> with the output of the AJAX request
});

答案 2 :(得分:0)

在javascript中警告变量名称并确保它不为null。您可以使用exit; 在php文件中回显$ _POST ['name']。使用success:function(result)接收javascript中已处理的数据并提醒它。 将每个数据存储在php文件中的单个变量中。最后回应他们。