发布到php脚本时未触发jQuery AJAX请求。

发布到php脚本时未触发jQuery AJAX请求。,php,jquery,ajax,Php,Jquery,Ajax,我有一个数据库表,我正试图使用jQueryAjax从中检索数据。当我的第一个页面加载时,它对一个表进行php调用,并填充一个select表单元素。-这很有效 然后我想选择一个选项提交表单,并通过Ajax返回行。 以前,我的脚本只处理PHP文件,但我很难让它正常工作。提交表单时,我的URL正在更改: http://localhost/FINTAN/testertester.php?name=Specifics. 我没有得到任何回报。此外,当查看我的控制台时,我得到一个未定义的jquery 工厂j

我有一个数据库表,我正试图使用jQueryAjax从中检索数据。当我的第一个页面加载时,它对一个表进行php调用,并填充一个select表单元素。-这很有效 然后我想选择一个选项提交表单,并通过Ajax返回行。 以前,我的脚本只处理PHP文件,但我很难让它正常工作。提交表单时,我的URL正在更改:

http://localhost/FINTAN/testertester.php?name=Specifics.
我没有得到任何回报。此外,当查看我的控制台时,我得到一个未定义的jquery 工厂jquery。我可以在jqueryui.js中找到有问题的行。不确定这是问题还是我的代码导致了问题。我已经清除了firefox缓存,由于我没有通过jquery方法成功调用AJAX,我猜这是我的代码

为了获得下面的代码,我混合并匹配了一本书、一个在线教程和许多其他来源,这不是我第一次尝试。理想情况下,我希望输出表行。然而,在我开始之前,仅仅是让一个请求生效,并且知道它不是冲突或兼容性问题,就会让我感觉更好,不会受到阻碍

这是我试图从中检索的PHP文件

 <?php
include 'config.php';

$batchtype2 = $_POST['name'];


$batchtype2 = mysqli_real_escape_string($con,$batchtype2);
$sql = "SELECT * FROM script WHERE scriptname  = '".$batchtype2."' ";       


$result = mysqli_query($con,$sql);

$count=mysqli_num_rows($result);

if($count==0 ){
    echo "</br></br></br></br></br></br></br><p> No Matching results found</p>";
}

else{
    while($row = mysqli_fetch_array($result)) {

        echo '<tr><td>'.$row['scriptname'].'</td></tr>';
  echo '<tr><td>'.$row['scripthours'].'</td></tr>';
   echo '<tr><td>'.$row['scripttotal'].'</td></tr>';


 }
}
mysqli_close($con);
?>

提前感谢您的帮助

通过进行以下更正,您会遇到一些语法问题以及使用问题,当您在JavaScript/jQuery中加载此页面时,这些问题应该会在浏览器控制台中显示出来。这将像您预期的那样工作-

确保更改此行-

var vname = $("#name").val;
为此—

var vname = $("#name").val(); // note the parentheses
在你的职能中—

$(document).ready(function(){
    $("#btn").click(function(e){
       e.preventDefault(); // prevent the default action of the click
           var vname = $("#name").val();
           $.post("addithandle1.php", {name:vname}, function(response, status) { // POST instead of GET
               // never use alert() for troubleshooting
               // output for AJAX must be in the callback for the AJAX function
               console.log("recieved data-------*\n\nResponse : " + response +"\n\nStatus : " + status);
               $('#table').html(response); // put response in div
        });
    });
});
现在$\u POST['name']应该得到正确填充

要使该表显示在请求页面中,请首先确保PHP完整地构成该表

向请求页面添加一个div,并修改上面的AJAX调用,如图所示

<div id="table"></div>

现在,当您发出请求时,请求页面上的div将使用PHP脚本返回的任何内容进行更新。

关于您的脚本有几点

首先,确保您编写了结构良好的代码,并且没有任何地方出错/损坏

您在$document.readyfunction{中只有按钮的.click事件,但是您将ajax请求留在了外部,我想您这样做了,因此它也会在第一页加载ajax请求

问题是,现在它只会使它在第一页加载,但不是当你点击按钮,点击按钮,你只会得到名称的值

我建议您尝试以下方式:

<script>

$(document).ready(function() {
    // bind button click and load data
   $("#btn").click(function(){
       loadData();
       return false; // prevent browser behaviour of the button that would submit the form
   }
   // load data for the first time
   loadData();
};

function loadData() {
    var vname = $("#name").val;
    $.post("addithandle1.php", { name:vname }, function(response, status) {
       alert("recieved data-------*\n\nResponse : " + response 
               +"\n\nStatus : " + status);
    });
}

</script>
请注意:

我建议始终将jquery代码放在$document.ready中,因为这样可以保证在运行jquery之前加载它 默认情况下,如果表单上有一个您单击的提交按钮,则该表单将由浏览器提交。如果您使用ajax,则应该在按钮单击事件或onsubmit=return false的表单上防止这种行为。
您正在尝试使用GET设置参数,但您正在尝试使用$\u POST super global获取值。不,他没有尝试设置$\u GET,他正在尝试ajax,但因为他没有阻止默认表单提交,表单也会被提交,并生成一个包含参数的url。Small correction@Alexandru-document ready handler ma在jQuery对DOM进行操作之前,请确保DOM已完全加载。感谢您指出Jay,我没有意识到这一点,我只知道为了使jQuery和html正确交互,将代码放在那里是很重要的,但我不知道后面发生的确切事情:我输入了var vname=$name选项:selected.text;而不是.val和我得到的在控制台中键入所需的响应。问题是选项值和文本是相同的php echo?我仍然可以使用它。如果我想将响应文本放入我的页面流中,我必须获取一个元素“element”。htmlrespons.text?我现在看到了这个。Jay想知道为什么所选的选项起作用了!您已经非常有用了!但是我如何将此从日志转移到我的页面?Jay-我真是太感谢你了。我已经为这个问题寻找了几天的解决方案,现在是关于家庭责任/工作的,我正要满足于工作不太愉快的PHP解决方案。谢谢
<script>

$(document).ready(function() {
    // bind button click and load data
   $("#btn").click(function(){
       loadData();
       return false; // prevent browser behaviour of the button that would submit the form
   }
   // load data for the first time
   loadData();
};

function loadData() {
    var vname = $("#name").val;
    $.post("addithandle1.php", { name:vname }, function(response, status) {
       alert("recieved data-------*\n\nResponse : " + response 
               +"\n\nStatus : " + status);
    });
}

</script>