什么适用于POST不适用于AJAX。但为什么?

时间:2015-08-07 02:56:39

标签: javascript ajax

此代码运行正常,将JSON正确发布到另一侧

$.post("/admin/httpaction/verifyCertificate",
                    {_token: '{{csrf_token()}}', certificationNumber: certificateID},
                    function(data){
                        console.debug(data);
                       alert("posted!");
                    }, "json");

此代码未正确编码JSON,导致内部服务器错误。它一定是我对JSON编码做错的事情。但是什么?

 var verifyObj = {
                _token: "{{csrf_token()}}",
                certificationNumber: certificateID
            }

    $.ajax({
              url: '/admin/httpaction/verifyCertificate',
              dataType: 'json',
              type: 'post',
              contentType: 'application/json',
              data: verifyObj,
              processData: false,
              success: function( data, textStatus, jQxhr ){
                 alert("success");
              },
              error: function( jqXhr, textStatus, errorThrown ){
                  alert("error " + textStatus + " " + errorThrown );
               }
            });

1 个答案:

答案 0 :(得分:3)

由于您将processData设置为false,因此未对verifyObj进行编码。请参阅$.ajax processData规范:

  

processData(默认值:true)

     

类型:布尔值

     

默认情况下,数据作为对象传入数据选项   (技术上,除了字符串之外的任何东西)将被处理和   转换为查询字符串,适合默认的内容类型   "应用程序/ X WWW的窗体-urlencoded&#34 ;.如果你想发送一个   DOMDocument或其他未处理的数据将此选项设置为false。

将其设置为true可以解决您的问题。