Javascript 如何将变量值从JS传递到PHP(而不是通过表单)
我是新来的。所以我尝试将变量值从客户端传递到php服务器。我查看了这件事,看到了很多答案,但大多数答案都是关于发送表单值的。我要做的是传递实际的变量值。一个非常简单的示例(以下按钮的多个实例): 每次点击一个按钮,计数器就会上升一(在“如果”检查之后)。假设我想获得服务器的计数器值,应该如何实现。从我的搜索中,我了解了AJAX,但不幸的是,我无法根据自己的情况调整它。。。 我尝试将此作为AJAX请求:Javascript 如何将变量值从JS传递到PHP(而不是通过表单),javascript,jquery,ajax,Javascript,Jquery,Ajax,我是新来的。所以我尝试将变量值从客户端传递到php服务器。我查看了这件事,看到了很多答案,但大多数答案都是关于发送表单值的。我要做的是传递实际的变量值。一个非常简单的示例(以下按钮的多个实例): 每次点击一个按钮,计数器就会上升一(在“如果”检查之后)。假设我想获得服务器的计数器值,应该如何实现。从我的搜索中,我了解了AJAX,但不幸的是,我无法根据自己的情况调整它。。。 我尝试将此作为AJAX请求: $("#click_ajax").click(function() { $.ajax({
$("#click_ajax").click(function() {
$.ajax({
type: 'post',
url: 'c:/xampp/htdocs/abby/test.php',
data: {counter}
});
});
使用此PHP:
<?php
$counter = $_POST['counter'];
echo $counter
?>
不幸的是,它没有工作-无论我做什么,我都会通过xampp收到一个“注意:未定义的索引:C:\xampp\htdocs\abby\test.php第9行中的计数器”错误。希望有人能帮助我。提前感谢,
Abby.您没有通过Ajax请求发送正确的数据。试试这个: JS: PHP(ajax文件的更优雅的方式):
希望这有帮助。您没有通过Ajax请求发送正确的数据。试试这个:
$("your-form-id or event-any-id").on("click", function(event)
{ event.preventDefault();
var post = new FormData( $("#form-id") );
$.ajax({
url: "url",
type: "POST OR GET",
dataType: "JSON",
data: post,
processData: false,
contentType: false,
success: function (data, status) {},
error: function (xhr, desc, err){}
});
});
JS:
PHP(ajax文件的更优雅的方式):
希望这有帮助
$("your-form-id or event-any-id").on("click", function(event)
{ event.preventDefault();
var post = new FormData( $("#form-id") );
$.ajax({
url: "url",
type: "POST OR GET",
dataType: "JSON",
data: post,
processData: false,
contentType: false,
success: function (data, status) {},
error: function (xhr, desc, err){}
});
});
//更多细节
//网址:
//更多细节
//url:您就快到了,问题是对象的格式。您只需将其更改为
数据:{counter:counter}
。有关AJAX的更多信息,请参阅jQuery文档:。还要注意,您需要在web服务器上运行代码。您当前将在文件:\\C:\…
路径中发现安全错误(更不用说PHP代码将无法工作)。如果你用谷歌搜索IIS或XAMPP,你可以很容易地安装它们。在数据中,它是这样工作的:data:{key:value,key2:value2}
,所以你需要添加一个值来计数器<代码>数据:{counter:counter}“c:/xampp/htdocs/abby/test.php”不是有效的URL。PHP将不会在此上下文中执行,并且在尝试通过ajax调用本地文件时也会出现安全错误。它需要类似于“…”等,因为您的本地Web服务器配置得很好。@Rorymcrossan,@keja No,{counter}
作为一个很好的例子。正如@PeterMader所指出的,我们错了,您看起来还不错。不幸的是,它不起作用了,它是否影响了你的PHP,或者甚至没有发生?你几乎做到了,问题是对象的格式。您只需将其更改为数据:{counter:counter}
。有关AJAX的更多信息,请参阅jQuery文档:。还要注意,您需要在web服务器上运行代码。您当前将在文件:\\C:\…
路径中发现安全错误(更不用说PHP代码将无法工作)。如果你用谷歌搜索IIS或XAMPP,你可以很容易地安装它们。在数据中,它是这样工作的:data:{key:value,key2:value2}
,所以你需要添加一个值来计数器<代码>数据:{counter:counter}“c:/xampp/htdocs/abby/test.php”不是有效的URL。PHP将不会在此上下文中执行,并且在尝试通过ajax调用本地文件时也会出现安全错误。它需要类似于“…”等,因为您的本地Web服务器配置得很好。@Rorymcrossan,@keja No,{counter}
作为一个很好的例子。正如@PeterMader所指出的,我们错了,您看起来还不错。不幸的是,它不起作用了,是它击中了你的PHP还是根本没有发生?谢谢,但这对我来说不起作用。我在C:\xampp\htdocs\abby\test.php的第16行得到了一个“解析错误:语法错误,意外的“{”错误”。我在上面上传的基本php代码也给了我一个错误:“注意:未定义的索引:第9行C:\xampp\htdocs\abby\test.php中的计数器”.我做错了什么?谢谢!我错过了案例中if上的a),我现在将进行编辑,尝试一下。谢谢你的时间。现在我没有收到错误,但仍然没有显示(回声)php页面上的任何内容。还有,为什么我的基本php代码会抛出错误?再次感谢,AbbyTry在$_帖子上转储了一个var_,看看里面有什么,我认为索引计数器没有定义,因为您使用了data:{counter}语法而不是data:{counter:counter}。可能您的索引是1。我没有尝试使用您的语法。。请让我知道var_转储正在打印什么。此外,我建议您在将计数器变量发送到ajax之前检查它。Write console.log(counter);就在ajax请求之前,我假定它是空的,因为从您的帖子中我看不到您在哪里声明变量并为其赋值。谢谢,但这对我不起作用。我得到了一个“解析错误:语法错误,在C:\xampp\htdocs\abby\test.php的第16行出现意外的“{”。我上传的基本PHP代码(其他用户已批准)也给了我一个错误:“注意:未定义索引:第9行C:\xampp\htdocs\abby\test.PHP中的计数器”。我做错了什么?谢谢!我错过了一个)如果在案例中,我现在就编辑,试试看。感谢您的时间。现在我没有收到错误,但仍然没有显示出来(echo)php页面上的任何内容。另外,为什么我的基本php代码会抛出错误?再次感谢,AbbyTry在$_POST上转储了一个var_,看看里面有什么,我认为索引计数器没有定义,因为您使用了data:{counter}语法而不是data:{counter:counter}。可能您的索引是1。我没有尝试使用您的语法。。请让我知道var_转储正在打印什么。此外,我建议您在将计数器变量发送到ajax之前检查它。Write console.log(counter);就在ajax请求之前,我假定它是空的,因为从您的帖子中我看不到您在哪里声明变量并为其赋值。
if (isset($_POST['action']))
{
$strAction = $_POST['action'];
switch ($strAction)
{
case 'sendCounter':
if (isset($_POST['counter']))
{
echo $_POST['counter'];
}
break;
}
}
$("your-form-id or event-any-id").on("click", function(event)
{ event.preventDefault();
var post = new FormData( $("#form-id") );
$.ajax({
url: "url",
type: "POST OR GET",
dataType: "JSON",
data: post,
processData: false,
contentType: false,
success: function (data, status) {},
error: function (xhr, desc, err){}
});
});