在同一页面中将值从ajax传递到php变量

时间:2013-06-05 07:02:16

标签: php jquery

从3天开始,我正在努力从Ajax& PHP,我尝试了所有教程,但我无法得到解决方案,我是Ajax,Jquery的新手,但我的问题对你们来说非常简单。

我使用jquery&amp; amp; PHP,我已经使用HTML(ul,li)创建菜单所以我想要的是,如果我点击菜单项ajax应该发送值到php变量然后执行php函数,但所有这一切应该发生在同一页面,.. < / p>

请帮我解决问题。

到目前为止,我尝试了以下内容:

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变量的值它应该只在同一页面发生

3 个答案:

答案 0 :(得分: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'] );

答案 1 :(得分: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-对于你的问题,你没有启动AJAX调用点击一个href,你有一个AJAX函数链接到input type=submit,它也在一个表单之外..所以让我们做这更好:

<button id="btn">submit</button>

答案 2 :(得分: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>