Javascript 我不能使用Ajax通过RESTAPI发布Yammer

Javascript 我不能使用Ajax通过RESTAPI发布Yammer,javascript,ajax,yammer,Javascript,Ajax,Yammer,嗨,我想创建JavaScript应用程序,使用YammerRESTAPI将消息发布到Yammer。 但我有一个限制。我不能使用Yammer SDK发布消息。因此,我编写了ajax代码 然而,在这段代码中是不起作用的。 XMLHTTPrequest总是“拒绝访问” 为什么这个代码不起作用 我的Yammer网络允许第三方应用程序 函数sendData(){ var messagebody=新对象(); messagebody.body=“这是测试”; messagebody.group_id=“4

嗨,我想创建JavaScript应用程序,使用YammerRESTAPI将消息发布到Yammer。 但我有一个限制。我不能使用Yammer SDK发布消息。因此,我编写了ajax代码

然而,在这段代码中是不起作用的。 XMLHTTPrequest总是“拒绝访问”

为什么这个代码不起作用

我的Yammer网络允许第三方应用程序

函数sendData(){
var messagebody=新对象();
messagebody.body=“这是测试”;
messagebody.group_id=“4627253”
//获取accToken
accToken=responseObject.access\u token.token;
var accAuthHead=“持有人”+accToken;
$.ajax({
url:“https://www.yammer.com/api/v1/messages.json",
键入:“POST”,
标题:{
“接受”:“应用程序/json,文本/javascript,*/*;q=0.01”,
“接受编码”:“gzip,deflate”,
“授权”:accAuthHead.toString(),
“X-request-With':“XMLHttpRequest”,
},
数据:JSON.stringify(messagebody),
数据类型:“json”,
成功:功能(数据){
log(“ajaxpost成功”);
},
错误:函数(XMLHttpRequest、textStatus、errorshown){
警报(“请求有错误。”+textStatus.toString()+XMLHttpRequest.toString());
}
});

}
我尝试了您的代码,发现两个可能导致您出现问题的严重问题:

  • 您应该使用https://api.yammer.com/api/v1/messages.json而不是https://www.yammer.com/api/v1/messages.json

  • 不要使用JSON。字符串化您的数据,因为它应该作为JSON而不是字符串发送

  • 希望有帮助

    泰克、胡安和马克。 我在你的建议中更改了代码。现在代码正在工作。就在这里

    函数发送数据(msgbody){
    //var messagebody=new FormData();
    var testMessage={
    正文:msgbody,
    组别识别号:4627253
    }
    var jsonObj=JSON.stringify(testMessage);
    accToken=responseObject.access\u token.token;
    var accAuthHead=‘承载人’+accToken;
    $.ajax({
    url:“https://api.yammer.com/api/v1/messages.json",
    键入:“POST”,
    标题:{
    “授权”:accAuthHead.toString(),
    },
    数据:testMessage,
    成功:功能(数据){
    警报(“ajax post success.”);
    },
    错误:函数(XMLHttpRequest、textStatus、errorshown){
    警报(“请求有错误。”+textStatus+XMLHttpRequest.toString());
    }
    });   
    
    }
    uhh,JSON是一个字符串。。。如果将JavaScript对象传递给
    数据
    选项,则该对象将转换为查询字符串。请看Juan,jQuery无论如何都会将数据转换为字符串,但不会将其转换为字符串化的JSON对象,这一点您是对的。它将把它变成一个查询字符串(“key=value&key2=value2”)。如果Blue以querystring表示法作为字符串提供数据,就不会有问题。这正是我已经说过的。你告诉OP不要调用
    JSON.stringify
    Juan,我认为你没有正确阅读我对你评论的回复。我告诉他不要使用JSON.stringify,因为这将导致向jQuery.ajax方法发送错误的字符串值。他应该传递原始对象,即符合JSON通知,或者在querystring通知中手动创建一个字符串。stringify在这里不起作用,相信我,我已经试过了。我现在明白你的意思了,我确实误读了。他们的API确实说POST参数必须是表单编码的,而不是JSON编码的。我认为您应该更新您的答案,而不是说
    您的数据,因为它应该被发送,JSON
    ,它应该是标准格式编码