我无法在我的jquery .html()函数中使用ajax传递php $ _POST变量

时间:2016-08-12 11:07:26

标签: javascript php jquery ajax

我目前正在尝试使用ajax更改页面html的搜索字段,以显示用户搜索的结果。

我目前正在尝试的更多内容是:

  • 获取文本字段的值(完美运行)
  • 将该值传递到$_POST变量(也可以)
  • .html函数中调用的PHP函数中使用此post变量   jQuery显示搜索结果(不起作用)

您可以在下面找到我目前的代码。

$(".searchProducts").keydown(function(e)
 {
    if(e.keyCode == 13)
    {
        var searchTerms = $(this).val();
        $.ajax
        ({
            url: "#",
            type: "POST",
            dataType: "html",
            data: "searchTerms=" + searchTerms,
            success : function()
            {
                alert(searchTerms);
                <?php
                    $t = fopen("test.txt", "w+");
                    fwrite($t, $_POST['searchTerms']);
                    fclose($t);
                ?>
                $.ajax
                ({
                    url: "#",
                    type: "GET",
                    dataType: "html",
                    success : function()
                    {
                        $("#supplierContainer").html("<?php searchResults($_POST['searchTerms']); ?>");
                    }

                })
            }
        });
    }
 });

对于php函数

function searchResults($test)
{
    echo "<div class='test'>";
        echo "<h1>";
            echo $test;
        echo "</h1>";
    echo "</div>";
} 

在我的第一个ajax调用中,警报工作并在我的搜索栏中显示值,fopen函数在我的文件夹中正确创建了一个.txt文件,其中包含正确的值。但我真的不知道为什么我不能在函数调用中使用post变量。

编辑:我的php函数暂时只是用于测试,它最终将是一个使用MySQL查询中的$ _POST变量来获取和显示结果的函数。

2 个答案:

答案 0 :(得分:0)

你弄乱了客户端和服务器端编程。

您需要两个文件: 的 searchResults.php

function searchResults($test)
{
    echo "<div class='test'>";
        echo "<h1>";
            echo $test;
        echo "</h1>";
    echo "</div>";
} 
echo(searchResults($_POST['searchTerms']));

和 的 search.js

$(".searchProducts").keydown(function(e)
 {
    if(e.keyCode == 13)
    {
        var searchTerms = $(this).val();
        $.ajax
        ({
            url: "searchResults.php",
            type: "POST",
            dataType: "html",
            data: "searchTerms=" + searchTerms,
            success : function(data)
            {
                alert(searchTerms);
                console.log(data)
                $("#supplierContainer").html(data.response);
            }
        });
    }
 });

答案 1 :(得分:0)

From the success part of your ajax code
            success : function(message) //(message) is the search response from the function in php
            {
                alert(searchTerms);
                <?php
                    $t = fopen("test.txt", "w+");
                    fwrite($t, $_POST['searchTerms']);
                    fclose($t);
                ?>
                $.ajax
                ({
                    url: "#",
                    type: "GET",
                    dataType: "html",
                    success : function()
                    {
                        $("#supplierContainer").html(message); //this will prevent you from mixing php and jquery
                    }

                })
            }