7

自从 3 天以来,我正在尽最大努力从 Ajax 和 PHP 获得解决方案,我尝试了所有教程,但我无法获得解决方案,我是 Ajax、Jquery 的新手,但我的问题对你们来说真的很简单。

我已经使用 jquery 和 PHP 开发了网站,我已经使用 HTML(ul,li)创建了菜单,所以我想要的是,如果我点击菜单项 ajax 应该将值发送到 php 变量然后执行 php 函数,但这一切都应该发生在同一页,..

请帮我解决问题。

到目前为止,我已经尝试了以下方法:

JavaScript:

<script type="text/javascript">
    $("#btn").click(function() {
        var val = "Hi";
        $.ajax ({
            url: "oldindex.php",
            data: val,
            success: function() {
                alert("Hi, testing");
            }
        });
    });
</script>

PHP 和 HTML:

<input type="submit" id="btn" value="submit">
<form name="numbers" id="numbers">
    <input type="text" name="number" id="number">
</form>

<div id="number_filters">
    <a href="abc">1</a>
    <a href="def">2</a>
    <a href="ghi">3</a>
</div>

所以如果我点击href,我应该得到php变量的值,它应该只发生在同一页面中

4

3 回答 3

5

index.php

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#btn").click(function() {
        var val = "Hi";
        $.ajax ({
            url: "ajax.php",
            data: { val : val },
            success: function( result ) {
                alert("Hi, testing");
                alert( result );
            }
        });
    });
});
</script>

<input type="submit" id="btn" value="submit">
<form name="numbers" id="numbers">
    <input type="text" name="number" id="number">
</form>

<div id="number_filters">
    <a href="abc">1</a>
    <a href="def">2</a>
    <a href="ghi">3</a>
</div>

ajax.php

<?php
echo ( $_GET['val'] );
于 2013-06-05T07:19:59.613 回答
4

让我们来看看:

1-如果您正在进行 AJAX 调用,您的页面将不会被刷新。因此,如果您尝试将变量发送到使 AJAX 调用它不起作用的同一页面,这就是原因。当您能够看到页面并执行 AJAX 调用时,代码已经在客户端(您的 Web 浏览器),将不会看到或执行 PHP(PHP 仅在服务器上执行),所以它是不可能的使用 AJAX 捕获和处理传递给它的变量的同一页面(因为 AJAX 不会刷新页面,这就是 AJAX 的重点)。

2-如果您使用的是 AJAX,则不必调用同一页面。调用另一个 PHP,它将使服务器端为您工作,然后返回结果:

success: function(data) {
   alert("Hi, server returned this: "+data);
}

3-当您使用 AJAX 传递变量时,您必须为变量分配一个名称,以便可以在 PHP 端读取它:

data: {value: val},

4-对于您的问题,您无需单击 href 启动 AJAX 调用,而是将 AJAX 函数链接到 a input type=submit,它也在表单之外..所以让我们做得更好:

<button id="btn">submit</button>
于 2013-06-05T07:17:50.320 回答
1

这是给定示例代码的解决方案:

<?php if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    echo $_GET['q'];
    exit;
} ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script type='text/javascript' src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript">
    $(function(){    
        $("#btn").click(function(e) {
            e.preventDefault();
            var val = "Hi";
            $.ajax ({
                url: "test8.php",
                // wrong query. you are not passing key , so here q is key
                data: 'q=' + val,
                success: function(returnResponseData) {
                alert('Ajax return data is: ' + returnResponseData);
                }
            });
        });
    });
    </script>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
</head>

<body>
    <form name="numbers" id="numbers">    
        <input type="text" name="number" id="number">
        <input type="submit" name='button' id="btn" value="submit">
    </form>
</body>
</html>
于 2013-06-05T07:17:47.507 回答