当前位置: 首页 > 面试题库 >

在同一页面上将Ajax转换为PHP

公羊宗清
2023-03-14
问题内容

我正在尝试将变量发送到进行AJAX调用的同一页面。

仅当我分开PHP脚本时(例如process.php,相应地更改AJAX url),我才能收到成功的结果。

index.php

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
    $(function() { 
        $('form').submit(function(e) { 
            e.preventDefault();
            $.ajax({
                type        : 'POST',
                url         : 'index.php',
                data        : $(this).serialize(),
                dataType    : 'json',
                encode      : true
            })
            .done(function(data) {
                $('#result').html(data);    
            })
        });
    }); 
</script>
</head>

<body>
<?php
    $data = array();
    if(isset($_POST['name'])) {
        $data = 'You entered: ' . $_POST['name'];       
        echo json_encode($data);        
    }
?>
    <form>
        <input type="text" name="name">
        <input type="submit" value="Submit">
    </form>

    <div id="result"></div>
</body>

同一页是否可以捕获和处理我们使用AJAX传递的变量?


问题答案:

dataType : json在AJAX设置中进行了设置,因此您应该echo使用json对象而不是String(HTML)。
使用 exit()
代替echo,然后将PHP放在页面的顶部。因此,在检查是否$_POST['name']存在HTML之前,不会回显任何HTML 。

另一件事是,您$data = array()将在该行上转换为字符串:

$data = 'You entered:' . $_POST['name'];

它应该是 $data[] = ...

<?php
    $data = array();
    if(isset($_POST['name'])) {
        $data[] = 'You entered:' . $_POST['name'];
        exit(json_encode($data));       
    }
?>

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
    $(function() { 
        $('form').submit(function(e) { 
            e.preventDefault();
            $.ajax({
                type        : 'POST',
                url         : 'index.php',
                data        : $(this).serialize(),
                dataType    : 'json',
                encode      : true
            })
            .done(function(data) {
                $('#result').html(data);    
            })
        });
    }); 
</script>
</head>

<body>
    <form>
        <input type="text" name="name">
        <input type="submit" value="Submit">
    </form>
    <div id="result"></div>
</body>


 类似资料:
  • 我使用的是Spring数据JPA。 我的控制器如下所示 现在我决定发送一个PageDTO对象来代替Page对象,以限制发送内容。有什么办法可以用java 8把页面转换成页面? 我看到Page是从派生而来的,所以我想我可以做一些类似的事情,但不知道如何将它与PageDTO和UserDTO结合起来。 有没有有效的java 8方法来做到这一点。 我想出了这个解决方案 我想知道是否有另一种有效的方法来做到

  • 问题内容: 当试图在同一页面上发送值时,我对此感到困惑。 好吧,它将显示在html标记的顶部,但如果在正文内部,则将显示null。 问题答案: 这是适合您的工作代码。要将ajax请求发送到同一页面,可以将参数保持为空,这已经在做。如果您试图让脚本在有值时表现不同,请使用下面的用法。

  • 问题内容: 当试图在同一页面上发送值时,我对此感到困惑。 好吧,它将显示在html标记的顶部,但如果在正文内部,则将显示null。 问题答案: 这是适合您的工作代码。要将ajax请求发送到同一页面,可以将参数保持为空,这已经在做。如果您试图让脚本在有值时表现不同,请使用下面的用法。

  • 我似乎不知道如何使用ajax发布。我做了一个愚蠢的表单来尝试它,甚至在把它削减到只有两个值之后,仍然不能得到任何工作。我的html是这样的: 那么,我的外部javascript到目前为止只是一个单一的函数: 而我的php只是回显这些内容: 我在firebug或Chrome的工具薄中找不到任何错误…谁能告诉我我做错了什么?

  • 问题内容: 我正在尝试使用jquery ajax进行api调用,我正在使用curl进行api,但是我的ajax抛出了HTTP 500 我有一个curl命令,看起来像这样: 我像这样尝试过ajax,但无法正常工作: 我想念什么? 问题答案: 默认情况下,$。ajax()将转换为查询字符串(如果还不是字符串),因为这里是一个对象,请将其更改为字符串,然后设置,这样它就不会转换为查询字符串。

  • 问题内容: 有哪些实用程序可获取网页图像? 基本上等同于打开页面后对其进行“截屏”。 问题答案: wkhtmltopdf和wkhtmltoimage是开源(LGPLv3)命令行工具,可使用QT Webkit渲染引擎将HTML渲染为PDF和各种图像格式。