使用javascript将数据发送到PHP

时间:2014-02-09 13:03:52

标签: javascript php

我想将带有Javascript的一个DIV标记中的数据和Text发送到php值。

我使用此代码时遇到问题:

<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
<script>
    $.post('http://localhost/test/index.php', {
        name: $('.class').html()});
        $(document).ready(function(){
            $("#my_form").on("submit", function () {
                var hvalue = $('.class').text();
                $(this).append("<input type='hidden' name='name' value=' " + hvalue + " '/>");
            });
    });
</script>
<form action="" method="POST" id="my_form">
    <div class="class" name="name">
        this is my div
    </div>
    <input type="submit" value="submit" name="submit" />
</form>

<?php
if (isset($_POST['name'])) {
    echo $_POST['name'];
}

它不起作用。没有出现!没有PHP工作!

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

您已声明要执行以下操作:

  

我想发送一个DIV标记中的数据和文本   Javascript成为php值。

  

它不起作用。没有出现!没有PHP工作!

首先,您需要决定“出现”的含义。您是否尝试获取PHP脚本的结果并将其嵌入页面?

首先,让我们关注您的第一个项目,发送数据。请执行以下操作:

从您正在发布的帖子请求中删除onReady语句。这很令人困惑,可能会导致意外结果:

 $.post('http://localhost/test/index.php', {
        name: $('.class').html()});
        $(document).ready(function(){
            $("#my_form").on("submit", function () {
                var hvalue = $('.class').text();
                $(this).append("<input type='hidden' name='name' value=' " + hvalue + " '/>");
            });
    });

可读性是关键所在。这绝对是奇怪的,我从未见过有人这样做过。

注意我将您的班级从.html()更改为.text()。这是因为在此时您只使用文本节点而不是html给出示例代码。如果它实际上是html,那么你可以使用html()函数。

其次,您尝试访问的PHP脚本是直接嵌入的。 尝试将其移动到新文件,例如我上面的示例myPhpScript.php

在该文件中将是您的PHP代码,用于记录发布请求:

<?php
    if (isset($_POST['name'])) {
    echo $_POST['name'];

您在POST请求中缺少成功处理程序,因此当请求成功时,不会发生任何事情。请将以下内容添加到您的请求设置对象中。此时,您可以在准备就绪时执行以下操作

$(document).ready(function(){
    $.post('http://localhost/test/myPhpScript.php', {
            name: $('.class').html()}
           ,function(data){
                $(".class").text(data).append("<input type='hidden' name='name' value=' " + hvalue + " '/>");
            }
    });
});

这应该让你开始,但请记住,也可能有其他问题。我在这里也有自己的问题。我要责怪缺少咖啡因和蹒跚学步的孩子,加上不要长时间打开文档,以确保我完美无缺:)。

有人善于编辑我的错误,所以我感谢你。

答案 1 :(得分:0)

这是因为您没有为$.post请求指定成功处理程序。所以它只是返回一些HTML,就像你在后台一样,但你的JavaScript没有做任何事情。

请阅读http://api.jquery.com/jquery.post/上的API文档,并查看success(data, textStatus, jqXHR)参数的$.post部分。这是您定义成功处理程序的地方。

试试这个,你会明白我的意思:

$.post('http://localhost/test/index.php', {
    name: $('.class').html()
}, function(data) {
    alert(data);
});

function(data) { ... }中,您需要编写一些逻辑,以便它可以对您的数据执行某些操作。