繁体   English   中英

通过Ajax问题将JavaScript值发布到PHP

[英]Posting JavaScript Value to PHP via Ajax issue

我需要获取一个从jQuery到PHP的值,以便可以为自己的网站执行搜索功能。

我目前已尝试:

<script>

$(document).ready(function () { 
   $('#search_button').click(function(e){
        e.preventDefault();
        e.stopPropagation();
        carSearch();
   });
});

function carSearch() 
{
    $.ajax({
        type: "POST",
        url: 'cars.php',
        data: 
        {
            mpg : $('.mpg').val()
        },
        success: function(data)
        {
            alert("success! "+$('.mpg').val()+"mpg");
        }
    });

}

</script>

当按下按钮并且js值在警报中显示时,此ajax正在运行。

然而

if(isset($_POST['mpg']))
                {
                    $query = "SELECT * FROM cars WHERE mpg =< ".($_POST['mpg'])."";
                    echo "<div class='test'></div>";
                }
                else
                {
                    $query = "SELECT * FROM cars";
                } 

isset不会触发,div只是用于测试目的的一个大蓝框。 Ajax将发布到cars.php上,而这也是ajax所在的位置,因此将发布到其自己的文件中。 我还没读完有关它的内容,但是在不使用Ajax之前,我已经将其发布在同一文件中。

我也尝试过将值从ajax发布到另一个文件:

<?php
session_start();

$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('cdb', $conn);

if(isset($_POST['mpg']))
{
    $r = mysql_query  ("INSERT INTO test VALUES ".($_POST['mpg'])."", $conn);}
}
?>

只是为了测试它是否正在做任何事情,并且没有做任何事情。

所以

data: 
        {
            mpg : $('.mpg').val()
        }, 

似乎是错误的,尽管我是通过查看与将js传递给php有关的许多其他问题来理解这一点的。 我已经尝试了在这里看到的所有变体,只有上面的代码才导致成功函数警报触发。

我在这里看到一个错误

$r = mysql_query  ("INSERT INTO test VALUES ".($_POST['mpg'])."", $conn);}

该行末尾的“}”可能会引发错误。 Ajax运行时,.php文件中是否存在错误?

若要检查是否有错误或查看什么.php文件返回,请按照下列步骤操作:

  1. 使用Chrome右键单击页面,然后选择“检查元素”
  2. 点击菜单中的“网络”
  3. 如果未激活,请单击过滤器图标(取决于您的Chrome版本)
  4. 单击子菜单的XHR元素
  5. 刷新页面,您的.php文件应该出现
  6. 单击它,查看文件返回了什么

(也可以在Firefox中完成,但标题不完全相同)

告诉我们你到这里来了。

另外,您应该使用extern文件方式。 因为返回的ajax数据对应于.php文件的内容。 如果您的.php文件包含您需要返回的内容以外的其他内容,则存在问题。 示例:.php文件上的任何HTML都将返回ajax数据,这可能与您想要的相去甚远。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM