Javascript 无法从Jquery(Ajax)调用发送对象
我正在尝试使用JS+JqueryAjax调用将数据发送到MongoLab DB。 我的问题是我能够在DB中看到OID,但没有填充任何数据。 签入代码时,网络设置我的有效负载始终为空。 我弄不明白为什么我的对象行为不端Javascript 无法从Jquery(Ajax)调用发送对象,javascript,jquery,ajax,mongodb,mlab,Javascript,Jquery,Ajax,Mongodb,Mlab,我正在尝试使用JS+JqueryAjax调用将数据发送到MongoLab DB。 我的问题是我能够在DB中看到OID,但没有填充任何数据。 签入代码时,网络设置我的有效负载始终为空。 我弄不明白为什么我的对象行为不端 <!DOCTYPE html> <html lang="en"> <head> <title>Boom!</title> <link href="https://netdna.bootstra
<!DOCTYPE html>
<html lang="en">
<head>
<title>Boom!</title>
<link href="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h1>Stuff.</h1>
<p>
<button class="btn btn-large">Press Me!</button>
</p>
<form name="ajaxform" id="ajaxform" method="POST">
First Name: <input type="text" name="fname" id="fname" value =""/> <br/>
Last Name: <input type="text" name="lname" id="lname" value ="" /> <br/>
</form>
</div>
</body>
</html>
<script>
var stuff = {
run: function () {
$('button').bind('click', function () {
if ('geolocation' in navigator) {
var geo_options = {
name: fname.value ,
surname: lname.value
};
navigator.geolocation.getCurrentPosition(stuff.send, stuff.error, geo_options);
window.alert(geo_options.fname);
document.write(geo_options.fname.value);
console.log(geo_options.fname.value);
}
});
},
error: function (msg) {
console.log(msg);
},
send: function (object) {
$.ajax({
url: "https://api.mongolab.com/api/1/databases/geolocation/collections/boom?apiKey=[apiKey]",
type: "POST",
data: JSON.stringify( object ),
contentType: "application/json; charset=utf-8"
}).done(function( msg ) {
console.log(msg);
});
}
};
$(function() {
stuff.run();
});
</script>
繁荣
东西
按我!
名字:
姓氏:
变量={
运行:函数(){
$('button')。绑定('click',函数(){
if(导航器中的“地理位置”){
变量geo_选项={
名称:fname.value,
姓氏:lname.value
};
navigator.geolocation.getCurrentPosition(stuff.send、stuff.error、geo_选项);
window.alert(geo_options.fname);
document.write(geo_options.fname.value);
log(geo_options.fname.value);
}
});
},
错误:函数(msg){
控制台日志(msg);
},
发送:函数(对象){
$.ajax({
url:“https://api.mongolab.com/api/1/databases/geolocation/collections/boom?apiKey=[apiKey]“,
类型:“POST”,
数据:JSON.stringify(对象),
contentType:“应用程序/json;字符集=utf-8”
}).done(函数(msg){
控制台日志(msg);
});
}
};
$(函数(){
stuff.run();
});
我总是在弹出窗口和控制台中将我的对象视为未定义对象。我刚刚开始使用JS和Jquery。
fname
和lname
没有定义。要访问它们的值,您需要使用以下两个函数:$(“#fname”).val()
和$(“#lname”).val()
。我很惊讶你在控制台中没有定义而不是一个错误
当您试图访问geo_options
中的这些值时,您没有使用正确的键<代码>窗口.alert(geo_options.fname)代码>应该是window.alert(geo_options.name)代码>
我还将把run、error和send函数保留在对象stuff
之外,因为似乎不需要它。我认为这些函数可能需要在文档准备代码段(您在底部看到的)中,选择器才能保证工作,但我不确定