繁体   English   中英

ajax中的RESTful请求并做出反应

[英]RESTful request in ajax and react

美好的一天,我试图在反应中消耗Web服务,但是我在ajax函数方面遇到问题,我不确定我的代码是否在工作:

prox= {"email":email, "password": password};
//tag comment
$.ajax({
  type: 'POST',
  url: (web service url),
  data: JSON.stringify(prox),
  contentType: "application/json; charset=utf-8",
  crossDomain: true,
  dataType: 'json',   
  success: function(data) {
    this.setState({success: true, result: data});
    alert("success");
    this.setState({prueba: 'success'});
  }.bind(this),
  error: function() {
    this.setState({failure: true});
    alert("failure");
    this.setState({prueba: 'failure'});
  }.bind(this)
});

但是我没有任何警报,当我单击按钮仅重新呈现表单时,函数句柄提交工作正常,我尝试将confirm()放在// tag注释所在的空间中,并弹出确认,但是警报没有,我认为我在功能或某些方面有错误,谢谢您的帮助。

我没有运行脚本,而是看着它,我想问题可能出在您的bind(this)

对我来说this.setState应该是一个错误“ 不是函数 ”,因为this不是反应对象。 要获取警报,请尝试将警报设置为第一状态。

可以肯定的是,请查看您的浏览器控制台。

看起来大部分时间都在工作。 我将其放入一个JSBin中,似乎没有什么异常。

http://jsbin.com/rulaguxote/1/edit?html,js,输出

我使您的JSX基本保持不变,并在组件中添加了一些内容来帮助您可视化其状态。 单击按钮发送伪造的ajax请求。 根据状态,它将发送回200或400的HTTP状态(成功或失败)。 这样,您可以看到success()error()函数的行为。

需要注意的另一件事:如果您担心.bind(this)是代码无法正常工作的原因,则可以指定如下上下文:

$.ajax({
    type        : 'POST',
    url         : '/test',
    data        : JSON.stringify(prox),
    contentType : "application/json; charset=utf-8",
    context     : this, //use this instead of .bind
    success     : function (data) {
        this.setState({success : true, failure : false});
        alert("success");
    },
    error       : function () {
        this.setState({failure : true, success : false});
        alert("failure");
    }
});

如果您有任何疑问,请告诉我。

经过大量研究,我发现我的真正问题出在同一来源策略上,现在在项目的localhost版本中可以正常工作,谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM