jQuery $.post 语法

4
我正在使用phpStorm编辑文件。以下代码会导致页面出错:
$("#delete_all_button").click(function(){
    var oTT = TableTools.fnGetInstance( 'pickup_list_all' );
    var selectedRows = oTT.fnGetSelectedData();

    first = selectedRows[0][selectedRows.length-1];
    $.post("delete.php", {'claimID': first}, function(data){
        console.log(data);
    });
});

具体来说,是claimID和first之间的冒号。当我在冒号下方红色波浪线上悬停时,编辑器告诉我"需要}"。当我尝试加载页面时,控制台没有错误,页面只是白屏。
另一个重要的事情要注意的是,当我从另一个没有代码错误的文件中复制先前有效的帖子代码到此文件时,错误会出现。
问题可能是什么?库?
我已经使用以下行导入了jquery:
<script type="text/javascript" charset="utf-8" src="js/jquery-1.7.2.min.js"></script>

谢谢!


1
也许这是个愚蠢的问题,但你是否检查过控制台以确认数据是否被记录了?如果你想要在页面上展示输出结果,那么 console.log 是不会打印任何东西的。 - Chris Pratt
1
语法是正确的,你确定这段代码是导致错误的原因吗?我在我的控制台上运行它,并没有得到语法错误。 - gen_Eric
我现在明白是什么导致了错误。这些不是.html文件,而是.tpl文件,它们是用PHP编写的模板解析器。当你有类似于{xxxx:xxxx}的行时,它们会表现得不同,所以确实是语法错误,但现在我必须想办法让Smarty不弄乱它,并将其视为这样的文件哈哈哈。 - Julian
由于这段 JavaScript 位于 Smarty 模板中,您是否尝试选择“设置|PHP|Smarty|使用Smarty 3空格策略”复选框?这是有关 PhpStorm 解释 Smarty 变量/指令的方式。否则,您需要用 {literal}...{/literal} 标签包围 JS 代码,以便 PhpStorm 正确解释 JS 代码。 - LazyOne
2个回答

0

jquery.post() 的数据参数期望“将映射或字符串与请求一起发送到服务器。” 您可以尝试将第二个参数更改为 JSON.stringify({'claimID': first}) 或将其包装在括号中以使其成为数组 [{'claimID': first}]


嗯,Eric。非常聪明。如果你读了我对Rocket的回应,你会看到我的真正问题。你的建议给了我一个想法。由于Smarty接受任何形式为{xxxx:xxxx}的内容,并且与jQuery的意图不同,我可以尝试这样做:var name = "'claimID':"; first = selectedRows[0][selectedRows.length-1]; $.post("delete.php", name+first, function(data){ console.log(data); }); - Julian

0

标准是不使用引号来表示属性名称。一些旧的浏览器可能会因此崩溃。

$("#delete_all_button").click(function(){
    var oTT = TableTools.fnGetInstance( 'pickup_list_all' );
    var selectedRows = oTT.fnGetSelectedData();

    first = selectedRows[0][selectedRows.length-1];
    $.post("delete.php", {claimID: first}, function(data){
        console.log(data);
    });
});

冒号不在属性名称中。我认为问题是他将键名作为字符串放置,所以您的代码无论如何都是正确的。 - keaton_fu
请不要使用冒号?你的意思是不要使用引号吗?(这是你所做的更改)。我正在使用当前版本的Chrome。尝试了你的代码,仍然出现完全相同的错误。谢谢你。 - Julian
抱歉,我的意思是不要使用引号。 - Daniel Aranda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接