Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Json文件发布到cloudant公共数据库时出错415_Javascript_Jquery_Json_Ajax_Cloudant - Fatal编程技术网

Javascript 将Json文件发布到cloudant公共数据库时出错415

Javascript 将Json文件发布到cloudant公共数据库时出错415,javascript,jquery,json,ajax,cloudant,Javascript,Jquery,Json,Ajax,Cloudant,我试图将一个简单的json对象发送到cloudant数据库,但一直收到一个错误。我将cloudant数据库的权限设置为允许读、写和复制。 我已经尝试过重写要放置的ajax帖子,我添加了一个没有解决错误的标题,但是我一直收到错误,似乎找不到原因 确切的错误是: POST https://birdoftravel.cloudant.com/questions/_all_docs/ 415 (Unsupported Media Type) send @ jquery-1.12.4.min.js:4 a

我试图将一个简单的json对象发送到cloudant数据库,但一直收到一个错误。我将cloudant数据库的权限设置为允许读、写和复制。 我已经尝试过重写要放置的ajax帖子,我添加了一个没有解决错误的标题,但是我一直收到错误,似乎找不到原因

确切的错误是:

POST https://birdoftravel.cloudant.com/questions/_all_docs/ 415 (Unsupported Media Type)
send @ jquery-1.12.4.min.js:4
ajax @ jquery-1.12.4.min.js:4
saveQuestionToDB @ saveQuestion.js:54
(anonymous) @ saveQuestion.js:77
dispatch @ jquery-1.12.4.min.js:3
r.handle @ jquery-1.12.4.min.js:3
函数问题对象(q,o,a){
这个问题=q;
这个选项=o;
这个答案=a;
}
函数createQuestion(){
var q=$(“#问题”).val();
控制台日志(“问题:+q”);
var o=$('#options').val().split(',');
var a=$('答案').val();
变量问题=新问题对象(q、o、a);
var jsonQ=JSON.stringify(问题);
log(“json字符串”+jsonQ);
$('问题').val(“”);
$(“#选项”).val(“”);
$('答案').val(“”);
返回jsonQ;
}
函数saveQuestionToDB(){
var urlDB=https://birdoftravel.cloudant.com/questions/_all_docs/';
var data=createQuestion();
console.log(“数据:”+数据);
/*$.ajax({
url:urlDB,
类型:“POST”,
数据类型:“应用程序/json”,
数据:数据,
成功:函数(){
警惕(“问题已发布!”);
},
错误:函数(err){
日志(“错误:+err+”问题未发布:+data);
}
});*/
$.ajax({
类型:“POST”,
url:urlDB,
数据:数据,
成功:功能(d){
log(“问题已发布!”+d);
},
错误:函数(e){
console.log(“未发布!”+e);
},
数据类型:“应用程序/json”,
});
}
$('#btn')。单击(函数(e){
saveQuestionToDB();
e、 预防默认值();
});

添加新的测验
进入一个新的测验
插入问题:

插入可选答案,答案之间用空格分隔

插入正确答案:


您将请求发送到错误的API端点。向
https://birdoftravel.cloudant.com/questions
https://$USERNAME.cloudant.com/$DATABASE
)和插入操作应成功。有关详细信息,请参阅

您正在使用的端点
https://birdoftravel.cloudant.com/questions/_all_docs
列出数据库中的所有文档:

下面的javascript代码修改版本对我很有用。注意这些变化:

  • 网址
  • 授权头
  • 内容类型标题

    function saveQuestionToDB(){
        var urlDB = 'https://<cloudant-user-name>.cloudant.com/questions';
        var data = createQuestion();
        console.log("data :"+data);
    
        $.ajax({
            type: "POST",
            beforeSend: function (xhr) {
                xhr.setRequestHeader ("Authorization", "Basic " + btoa('<cloudant-user-name>' + ":" + '<cloudant-password>));
            },
            url: urlDB,          
            data: data,
            success: function(d){
                console.log("question was posted!"+ JSON.stringify(d));                  
            },
            error: function(j,t,s){
                console.log("not posted! "+ JSON.stringify(j));
                console.log("not posted! "+ JSON.stringify(t));
                console.log("not posted! "+ JSON.stringify(s));
            },
            contentType: "application/json"
        });
    }
    
    函数saveQuestionToDB(){
    var urlDB=https://.cloudant.com/questions';
    var data=createQuestion();
    console.log(“数据:”+数据);
    $.ajax({
    类型:“POST”,
    发送前:函数(xhr){
    xhr.setRequestHeader(“授权”、“基本”+btoa(“+”:“+”));
    },
    url:urlDB,
    数据:数据,
    成功:功能(d){
    log(“发布了问题!”+JSON.stringify(d));
    },
    错误:函数(j,t,s){
    log(“未发布!”+JSON.stringify(j));
    log(“未发布!”+JSON.stringify(t));
    log(“未发布!”+JSON.stringify(s));
    },
    contentType:“应用程序/json”
    });
    }
    

由于您是在浏览器中运行此功能,因此需要启用CORS,否则您的请求将失败:

即使更改为该功能,它仍会给出相同的415错误。我也试着和邮递员一起发邮件,但我也犯了同样的错误。{“error”:“bad_content_type”,“reason”:“content type必须是application/json”}发送一个get可以工作,但我真的不明白为什么它不工作。我发送了一个额外的参数,让content type为json,现在它给出了一个关于json的utf-8的错误。请参阅我原始响应中的更新。要在Cloudant中启用CORS,请打开帐户选项卡并选择CORS。