我想用 Javascript 将一个 DIV 标记中的数据和文本发送到 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 工作!
我该如何解决这个问题?
最佳答案
您已声明您想执行以下操作:
I want to send the data and the Text that is in one DIV tag with Javascript into php values.
和
It doesn't work . Nothing appear ! and NO php working !
首先,您需要确定“出现”的含义。您是否尝试获取 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 请求中缺少 on success 处理程序,因此当请求成功时,不会发生任何事情。请将以下内容添加到您的请求设置对象中。此时您也可以在准备就绪的情况下执行以下操作
$(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 + " '/>");
}
});
});
这应该可以帮助您入门,但请记住,还可能存在其他问题。我在这里也有自己的问题。我要归咎于缺乏咖啡因和一个蹒跚学步的 child ,再加上没有保持文档打开足够长的时间以确保我得到它完美 :)。
有人好心地纠正了我的错误,为此我感谢你。
关于javascript - 使用 JavaScript 将数据发送到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21659342/