【问题标题】:Third parameter of $.post() is not working$.post() 的第三个参数不起作用
【发布时间】:2016-03-06 19:50:49
【问题描述】:

我正在使用以下代码向 REST Web 服务发送发布请求:

 <script type="application/javascript">
    $(document).ready(function() {
    $("#logbutton").click(function(event){
        $.post(
        "http://localhost:8080/CredentialsOnDemand/loginexpert/dologin",
        {
          ephone: $("#mobile").val(),  
          epassword: $("#password").val()
        },
        function(data) {
            data = $.parseJSON( data );
            $(".ray").html("$" + data.tag);
            console.log( "You clicked a paragraph!" );
        }
       );
    });
    });

Web 服务提供以下格式的 JSON 响应:

{"tag":"login","status":true}

来自 jquery 代码的调用正在运行,即 Web 服务运行良好,但我创建的用于解析 JSON 的函数不起作用。

注意: 我尝试在文本字段中不提供任何值的情况下运行此代码。控制台显示了 json 响应以及 console.log 行。但是当我再次在字段中输入值时,它没有。我无法理解这件事。

有人知道吗? 提前致谢。

【问题讨论】:

  • 函数只是没有运行,还是抛出错误? $.post 将尝试猜测响应类型,因此数据可能已经是 JSON 对象,而 $.parseJSON 可能会搞砸。数据打印什么就像你 console.log 一样(在 $.parseJSON 调用之前)?
  • 所以文档显示了如何启用错误处理程序......它告诉你什么? $("#logbutton") 是什么?可能需要阻止表单提交
  • 开发者控制台有错误吗?
  • 我不确定你是否需要解析响应,你可以跳过data = $.parseJSON( data );这一行
  • 我同意@cl3m。如果服务器返回的是 json 格式的数据,则无需再次解析。

标签: javascript jquery json web-services post


【解决方案1】:

您可以使用$.ajax 尝试更详细和详细的表格:

$(document).ready(function() {
  $("#logbutton").click(function(event) {
    var req = {
      ephone: $("#mobile").val(),
      epassword: $("#password").val()
    };
    $.ajax({
      url: "http://localhost:8080/CredentialsOnDemand/loginexpert/dologin",
      data: req,
      dataType: 'json',
      type: 'POST'
    }).done(function(data) {
      console.log(data);
      $(".ray").html("$" + data.tag);
      console.log("You clicked a paragraph!");
    }).fail(function(err) {
      console.error(err);
    });
  });
});

这会让您更容易查明错误的来源

【讨论】:

  • contentType 不正确,除非您对数据进行字符串化并且 OP 在帖子正文中期待 json
  • 谢谢,我自己也不确定。已编辑!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多