我正在尝试通过jQuery .ajax()将一段数据发送到PHP脚本,然后将其加载到div容器中。然后PHP脚本将使用这段数据运行,其内容将返回到上述div容器中。
最初,我编写了这段代码(如下所示),它在单击时成功添加了正确的元素,但无法正确命名它们,因为它没有将count_bucket变量传递给PHP。
var count_bucket = 4;
var loadPHP = "create_new_bucket.php";
$(".add_bucket").click(function(){
count_bucket++;
$("#tree_container2").append( $('<div id="bunch' + count_bucket + '">').load(loadPHP));
return false;
});
然后我将代码更改为此(如下所示),以尝试将count_bucket变量传递给PHP脚本。
var count_bucket = 4;
$(".add_bucket").click(function () {
count_bucket++;
var bucket_add = $.ajax ({
type: "GET",
url: "create_new_bucket.php",
data: var count_bucket,
dataType: "json",
async: false,
}).responseText;
$('#tree_container2').append( $('<div id="bunch' + count_bucket + '">').load(bucket_add));
});
PHP文件create_new_bucket.php如下所示:
<?php
include_once "test_functions.php"; // include functions page
$i = $_GET["count_bucket"];
drawBunchNew($i);
?>
我不清楚.ajax()的哪个方面不正确。我怀疑我没有在PHP中正确收集变量,或者我使用不正确的语法将其传递给PHP文件。如果有人能帮我识别错误,我将非常感激。
的 的 * 更新的 * ** * **
谢谢Tejs&amp; Tandu。我现在很清楚如何构建数据,但我仍然无法让整个jQuery工作。我把Tandu的建议改为使用.load()而改变我的PHP以使用POST来提取数据,但它仍然无法正常工作。
var count_bucket = 4;
$(".add_bucket").click(function () {
count_bucket++;
var bucket_add = $.load ("create_new_bucket.php", {count_bucket: count_bucket}, }).responseText;
$('#tree_container2').append( $('<div id="bunch' + count_bucket + '">').load(bucket_add));
});
PHP就是:
<?php
include_once "test_functions.php"; // include functions page
$i = $_POST["count_bucket"];
drawBunchNew($i);
?>
我使用的最终工作jquery(最终PHP与上面相同):
var count_bucket = 4;
var loadPHP = "create_new_bucket.php";
$(".add_bucket").click(function(){
count_bucket++;
$("#tree_container2").append( $('<div id="bunch' + count_bucket + '">').load(loadPHP, {count_bucket: count_bucket}));
return false;
});
答案 0 :(得分:1)
ajax请求的data属性将成为一个对象;把它想象成JSON:
{ data: var response }
无效的JSON。但是,您可以这样做:
data: { myKey: 'myValue', myKey2: 'myValue2' }
或者在你的情况下:
data: { count_bucket: 4 }
它会将data属性中包含的数据作为该名称值集的一部分发送到您的服务器。
答案 1 :(得分:0)
jQuery中ajax的数据需要作为查询字符串格式的字符串('key[]=value&key[]=value&key[]=value'
)或json对象({key: [value, value, value]}
)传递。我相信你所拥有的var
会出现语法错误。您还需要指定密钥,因此data: {count_bucket: count_bucket}
或data: 'count_bucket=' + count_bucket
应该这样做。
请注意,没有必要使用.ajax()
。使用.load()
,.post()
和.get()
通常会更好一些。在您的情况下,.load()
应该可以正常工作。将数据作为第二个参数传递。
为什么不希望请求是异步的?请注意,dataType
是返回值的数据类型,而不是您发送的数据类型。你收到了json吗? jQuery也可以正常猜测,如果你在php端设置标题,它会有很大帮助。 GET
类型也是默认类型。
最后注意事项:使用.load()
时,如果您将数据作为字符串传递,它将使用GET,但如果您将其作为对象传递,则使用POST。