这是我的代码
// when the DOM is ready
$(document).ready(function() {
// 'click' because IE likes to choke on 'change'
$('input[name=passedparameter]').click(function(e) {
// prevent normal, boring, tedious form submission
e.preventDefault();
// send it to the server out-of-band with XHR
$.post('http://localhost/topostthepost.php', function() {
data: $(this).val(),
success: function(resp) {
if(resp == '1') {
alert('Saved successfully');
} else {
alert('Oops, something went wrong!');
}
}
});
});
});
我是jQuery的新手,即使是在javascript中, 但据我所知,这在逻辑上是正确的,正确的代码,
- 当我打开回复页面时,(http://localhost/topostthepost.php
),我很好,
-im使用php框架,所以我需要发布“http://localhost/
”所以我得到了正确的网址,
- 当我运行页面时,它不会做任何事情,我检查元素(Chrome)它,它警告unexpected token
我错过了什么?是http://
中的jquery / javascript拒绝$.post
?
PS:代码抵免karim79
答案 0 :(得分:4)
非常微妙:
// when the DOM is ready
$(document).ready(function() {
// 'click' because IE likes to choke on 'change'
$('input[name=passedparameter]').click(function(e) {
// prevent normal, boring, tedious form submission
e.preventDefault();
// send it to the server out-of-band with XHR
$.post('http://localhost/topostthepost.php', function() {
// Problem is here ========================= ^^^^^^^^^^ <<==========
data: $(this).val(),
success: function(resp) {
if(resp == '1') {
alert('Saved successfully');
} else {
alert('Oops, something went wrong!');
}
}
});
});
});
它不应该有function
,你传递的是一个对象。使用function
,:
之后的success
会出现语法错误。 (data
之后的那个很好,因为它看起来像一个标签,但是行尾的逗号意味着我们仍然在一个表达式中,所以:
在success
之后是罪魁祸首。)
但请注意,这不是您致电$.post
的方式,而是与您致电$.ajax
的方式类似。这是更新的代码,没有语法错误并切换到$.ajax
:
// when the DOM is ready
$(document).ready(function() {
// 'click' because IE likes to choke on 'change'
$('input[name=passedparameter]').click(function(e) {
// prevent normal, boring, tedious form submission
e.preventDefault();
// send it to the server out-of-band with XHR
$.ajax({
url: 'http://localhost/topostthepost.php',
type: 'POST',
data: $(this).val(),
success: function(resp) {
if(resp == '1') {
alert('Saved successfully');
} else {
alert('Oops, something went wrong!');
}
}
});
});
});
然而,这一点看起来仍然很狡猾:
data: $(this).val(),
这意味着您将字符串传递给调用。如果你给一个字符串,它必须已经正确编码。因此,您必须对其进行编码,或者传递一个对象,以便jQuery可以为您编码:
data: {someParameterName: $(this).val()},
...其中someParameterName
是服务器在表单数据服务器端寻找的内容。那是将对象作为data
参数传递给调用。该对象(在本例中)只有一个属性,我在上面称为someParameterName
,其值为$(this).val()
。
当您向系统发送POST
时,默认情况下它是application/x-www-form-urlencoded
数据,它基本上由名称和值组成 - 例如,表单字段名称和这些字段的值。因此,在上文中,我发送了一个字段名称 someParameterName
以及来自$(this).val()
的值。因为我们将data
作为对象传递,所以jQuery将处理我们的名称和值的编码。
在接收POST
的服务器上,它会使用字段名someParameterName
查找帖子数据以获取值。
显然,您使用的参数名称比someParameterName
更合适。
这是一个假设的例子,给出了多个字段:
data: {
firstName: $("input[name=firstName]").val(),
lastName: $("input[name=lastName]").val()
}
在那里,我发布了两个字段(参数),名称为firstName
和lastName
。
答案 1 :(得分:0)
我认为错误是因为这一行$.post('http://localhost/topostthepost.php', function() {
试试这个:
$(document).ready(function() {
// 'click' because IE likes to choke on 'change'
$('input[name=passedparameter]').click(function(e) {
// prevent normal, boring, tedious form submission
e.preventDefault();
// send it to the server out-of-band with XHR
$.post('http://localhost/topostthepost.php', {data: $(this).val()}, function(resp) {
if (resp == '1') {
alert('Saved successfully');
} else {
alert('Oops, something went wrong!');
}
});
});
});