该代码可以正常运行,将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 );
               }
            });

最佳答案

由于将processData设置为false,因此verifyObj不被编码。请参见$.ajax processData规范:


  processData(默认值:true)
  
  类型:布尔值
  
  默认情况下,数据作为对象传递到data选项
  (从技术上讲,除了字符串以外的任何东西)都将被处理,
  转换为适合默认内容类型的查询字符串
  “应用程序/ x-www-form-urlencoded”。如果您想发送
  DOMDocument或其他未处理的数据,请将此选项设置为false。


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

09-25 18:26