将.POST转换为等效的.AJAX

时间:2012-01-03 23:13:24

标签: javascript jquery ajax

我需要将我的.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调用的正确语法吗?我必须遗漏一些东西,除非幕后发生的事情比我知道的要多。

2 个答案:

答案 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()之前

。但是要小心:同步请求通常会导致浏览器“锁定”,这非常难看并且会吓到用户。异步请求上的简单加载指示符可以解决这个问题吗?