这是我的ajax功能。我如何console.log第一个数据变量?以下代码不起作用:
$('.comment_form').on('submit', function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
data: {
'text': $('.comment_text').serialize(),
'csrfmiddlewaretoken': '{{ csrf_token }}',
},
success: function() {
console.log(text)
}
})
})
然而,当我这样做时:
$('.comment_form').on('submit', function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
data:
$('.comment_text').serialize(),
success: function(data) {
console.log(data)
}
})
})
它工作正常。知道为什么吗?
答案 0 :(得分:1)
由于
success: function() {
console.log(text)
}
text
在此上下文中不存在。
this.data.text
会起作用,因为你在对象的方法中:
$.ajax({
type: 'POST',
data: {
'text': $('.comment_text').serialize(),
'csrfmiddlewaretoken': '{{ csrf_token }}',
},
success: function() {
console.log(this.data.text);
// everything from the object is accessible with this here (i.e. type and data fields)
}
})
答案 1 :(得分:1)
尝试获取要发送到外部变量的数据,这样您就可以在ajax成功回调函数中访问其属性。
$('.comment_form').on('submit', function(e) {
var _data = {
'text': $('.comment_text').serialize(),
'csrfmiddlewaretoken': '{{ csrf_token }}'
};
e.preventDefault();
$.ajax({
type: 'POST',
data: _data,
success: function() {
console.log(_data.text)
}
})
})
答案 2 :(得分:0)
console.log($('.comment_text').val())
答案 3 :(得分:0)
您的第二个示例正在运行,因为它记录了成功回调函数的参数data
,即来自服务器的响应。
$('.comment_form').on('submit', function(e) {
e.preventDefault();
var dataToSend = {
text: $('.comment_text').serialize(),
csrfmiddlewaretoken: '{{ csrf_token }}',
};
$.ajax({
type: 'POST',
data: dataToSend,
success: function() {
console.log(dataToSend.text)
}
})
})
答案 4 :(得分:0)
案例1: 如果您只想访问在ajax数据中发送的相同文本,则必须先将其初始化。因为到目前为止文本不是任何变量所以它将给出undefined。你可以这样做:
$('.comment_form').on('submit', function(e) {
var requestData = {
'text': $('.comment_text').serialize(),
'csrfmiddlewaretoken': '{{ csrf_token }}'
};
e.preventDefault();
$.ajax({
type: 'POST',
data: requestData ,
success: function() {
console.log(requestData.text)
}
})
})
案例2:如果您尝试从ajax响应中访问文本,则必须在success函数中传递相同的参数。
$('.comment_form').on('submit', function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
data: {
'text': $('.comment_text').serialize(),
'csrfmiddlewaretoken': '{{ csrf_token }}',
},
success: function(text) {
console.log(text)
}
})
})
答案 5 :(得分:0)
好吧,如果您想要序列化并希望在此过程中发送一些数据。
以下是我的工作:
import akka.pattern.ask
object Main extends App{
val actorSystem = ActorSystem("actor-system")
implicit val implicitActorSystem = actorSystem
implicit val materializer = ActorMaterializer()
// actually create the actor
val testActor = actorSystem.actorOf(TestActor.props, "test-actor")
val route1: Route =
get {
path("hello") {
// get actor's reference using selection
val testActorSelection = actorSystem.actorSelection("/user/test-actor")
// now send using selection
val responseFuture = testActorSelection ? "hello"
// or send using the "val testActor" reference which we already have
val responseFuture = testActor ? "hello"
onComplete(responseFuture) {
case Success(message) => complete(message)
case Failure(ex) => complete(ex.message)
}
}
}
Http().bindAndHandle(route1, "localhost", 8185)
}
然后在AJAX数据中:
var myForm = document.getElementById('myForm');
formData = new FormData(myForm);
formData.append('custom_key', 'CUSTOM VALUE');
...
现在,在后端代码中,您可以找到表单字段以及自定义键值。
希望这有帮助。