我需要将我的.post javascript调用之一更改为等效的.ajax调用,但我似乎无法使其工作。 (我需要使它异步,并且帖子不允许额外的选项)。
原始工作.post调用如下:
$.post('includes/save_my_note.php', { pagenum: lastpage, userid: <?php echo $logged_user_id; ?>, subid: <?php echo $snipid; ?>, thenote: mynote, doctype: dtype, fileid: <?php echo $file_id; ?> });
它是javascript变量和插入的php变量的组合,但它在我的代码中完美运行,调用函数并通过$ _POST变量传递所有变量。
在尝试将其转换为完全等效的.ajax调用时,我将其转换为以下内容:
$.ajax({
type: 'POST',
url: "includes/save_my_note.php",
data: "{ pagenum: " +lastpage+ ", userid: <?php echo $logged_user_id; ?>, subid: <?php echo $snipid; ?>, thenote: " +mynote+ ", doctype: " +dtype+ ", fileid: <?php echo $file_id; ?> }"
});
通过查看.post和.ajax文档,我认为这些文档在执行时应该是相同的,但它不起作用。
有人知道将我的帖子调用转换为ajax调用的正确语法吗?我必须遗漏一些东西,除非幕后发生的事情比我知道的要多。
答案 0 :(得分:1)
之间的区别
"{ pagenum: " +lastpage+ ", userid: <?php echo $logged_user_id; ?>, subid: <?php echo $snipid; ?>, thenote: " +mynote+ ", doctype: " +dtype+ ", fileid: <?php echo $file_id; ?> }"
和
{ pagenum: lastpage, userid: <?php echo $logged_user_id; ?>, subid: <?php echo $snipid; ?>, thenote: mynote, doctype: dtype, fileid: <?php echo $file_id; ?> }
在这里至关重要。前者是一个字符串,后者是一个对象字面值。只有后者才能在这里工作。如果你想使用一个字符串,你应该这样做
data: "pagenum=" + lastpage + "&userid= .....
答案 1 :(得分:0)
$.post
是异步的。你是说你想让它同步吗?
在这种情况下,请不要打扰$.ajax
。只需致电
$.ajaxSetup({async:false});
在致电.post()
之前。但是要小心:同步请求通常会导致浏览器“锁定”,这非常难看并且会吓到用户。异步请求上的简单加载指示符可以解决这个问题吗?