我有以下功能。一个应该接收一个id,然后应该通过POST请求通过AJAX传输。
然而,虽然我知道“initiateSubCategories”函数正在工作,但无论出于何种原因,ajax函数都拒绝工作。它应该将数据发送到它所调用的同一个文件,我觉得这可能是问题所在。
我在这里做错了吗?我已经尝试通过jslint来验证我的JavaScript,但是所有给我的是关于我的代码格式的一些细微的抱怨(这不是问题,但是在我修复之后)。
这是我的代码:
function sendAjaxDataViaPost(pathToFile, ajaxData) {
$.post(pathToFile, function(ajaxData) {
alert("Data loaded: " + ajaxData);
$('#pageOne').append('<pre>' + ajaxData '</pre>');
});
}
function initiateSubCategories(parent) {
//$("#pageOne").append("<pre>" + parent + "</pre>");
sendAjaxDataViaPost('form.php', parent);
<?php
$categories = $this->formData->getCategories($_POST['value']);
?>
printSubCategories(<?=$categories;?>);
}
那么,我做错了什么?我在Firefox和Chrome中都尝试过这种方法,而且都没能生产任何东西。
更新
我将函数更改为使用以下格式:
$.post(pathToFile, { id: ajaxData }, function(ajaxData) {
alert("Data loaded: " + ajaxData);
$('#pageOne').append('<pre>' + ajaxData '</pre>');
});
然而,当我尝试降落$_POST['id']
时,它告诉我它没有被引用。
???
更新2
我刚刚在FireBug的控制台中发现我的“initiateSubCategories”函数未定义。我想知道的是如何做到这一点......
我会发布我的整个代码 - 第二双眼睛可能真的有助于这个。
<?php
$target = JPATH_BASE.DS."index.php?action=com_adsmanager&task=save&Itemid=".$this->itemId;
$saveTarget = JPATH_BASE.DS."index.php?action=com_adsmanager&task=Itemid=".$this->itemId;
function populateCategories($parent, FormData $formData) {
$categories = $formData->getCategories($parent);
foreach($categories as $section => $row){
?>
<option value=<?=$row['id'];
?>>
<?php
echo $row['name'];
?>
</option>
<?php
}
}
?>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js">
</script>
<script type="text/javascript">
function sendAjaxDataViaPost(pathToFile, ajaxData) {
$.post(pathToFile, {'id' : ajaxData}, function(ajaxData) {
alert("Data loaded: " + ajaxData);
$('#pageOne').append('<pre>' + ajaxData '</pre>');
});
}
function initiateSubCategories(parent) {
sendAjaxDataViaPost('form.php', parent);
$("#pageOne").apppend('<pre>' + <?=$_POST;?> + '</pre>'));
}
function printSubCategories(categories) {
for (var i = 0; i < categories.length; i++) {
var opt = document.createElement("option");
opt.text = categories['name'];
opt.value = categories['id'];
$("#subcategories").append(opt);
}
}
</script>
<div id="pageOne">
<form action=<?=$saveTarget;?> method="post" enctype="multipart/form-data">
<select name="category" id="categories" class="ads_categories" onclick="initiateSubCategories(this.value);">
<option value="0">--Please choose a category--</option>
<?php populateCategories(0, $this->formData); ?>
</select>
<select name="category" id="subcategories" class="ads_subcategories">
<option value="0">--Please choose a subcategory--</option>
</select>
</form>
</div>
答案 0 :(得分:1)
尝试将您的帖子更改为
$.post(pathToFile, { 'id': ajaxData }, function(ajaxData) {
alert("Data loaded: " + ajaxData);
$('#pageOne').append('<pre>' + ajaxData '</pre>');
});
我假设您在调用
之前通过ajaxData发送了一些值function sendAjaxDataViaPost(pathToFile, ajaxData) {