Javascript 使用ajax发布不起作用
我有一个这样的表格:Javascript 使用ajax发布不起作用,javascript,jquery,ajax,forms,submit,Javascript,Jquery,Ajax,Forms,Submit,我有一个这样的表格: <form> <input type="submit" value="X" id="deleteButton" onclick="ConfirmChoice(<?php echo $id; ?>)" /> </form> 从 input type=“submit”to input type="button" 另外,因为您没有设置它,所以对服务器的请求是json格式的,在您的情况下,json格式不正确 试着这
<form>
<input type="submit" value="X" id="deleteButton" onclick="ConfirmChoice(<?php echo $id; ?>)" />
</form>
从
input type=“submit”
to
input type="button"
另外,因为您没有设置它,所以对服务器的请求是json格式的,在您的情况下,json格式不正确
试着这样做:
var dataString = "{'id'= '"+ theid + "'}";
这应该可以让它工作:)如果不知道问题的确切位置,很难回答这个问题。deleteSong.php工作正常吗
正如其他人所说,您应该将输入类型更改为按钮
或从函数中返回false,否则浏览器将尝试以正常方式提交表单,但由于您没有在
标记中指定操作
,因此无法正常工作
就我个人而言,我会采取完全不同的做法:
HTML:
<input type="button" value="<?php echo $id ?>" id="deleteButton">
$(document).ready(function () {
$('#deleteButton').click(function () {
var answer = confirm("Are you sure you want to delete this song?");
if (!answer) {
return false;
}
var data = 'id=' + $(this).val();
$.ajax({
type: 'POST',
url: 'deleteSong.php',
data: dataString,
success: function (response) {
// response will contain the output from your php script.
// Do something with it here. If you just want to see what it
// says, do something like:
console.log(response);
// then look in the console (view > javascript console in chrome)
}
});
});
});
我只是想解释一下我在这里做什么(如果我告诉你你已经知道的事情,很抱歉,我想对将来可能阅读本文的任何人尽可能明确:)
- 我把整个东西都放在
$(document).ready(function(){…})中
因此它只在页面加载完成时运行,否则您可能会尝试将函数绑定到一个按钮上的click操作,而这个按钮还不存在
如果(answer!=0)
是多余的,您可以只写如果(!answer)
,因为任何正整数的计算结果都是true
- 我在上面包含了一个
success
回调,它可能会帮助您进行调试
整个页面上是否只有一个“删除”按钮?还是在每首歌旁边都会有一个删除按钮?如果是后者,则必须为每个按钮指定不同的ID,而不仅仅是deleteButton
,因为所有ID都必须是唯一的
如果上述操作不起作用,您确定jQuery已正确加载吗?要进行检查,请在控制台中键入jQuery
,如果没有收到错误,则可以。另一种可能是,您的deleteSong.php
脚本有问题,但我无法在没有看到它的情况下帮助您解决问题。添加一个返回值false;函数中的语句,因此更改此选项是有效的。谢谢因为它是用ajax发送的,所以在更新完changefs之后,我如何才能让页面刷新?location.reload();确实刷新了页面,但我想,使用ajax的全部意义在于您不想刷新页面!是的,如果答案解决了你的问题,你应该把它标记为正确答案!(这将有助于将来阅读此问题的人,这将有助于给出答案的人,这将有助于您,因为您正在标记正确答案,更多的人将愿意回答您的问题)谢谢您的帮助。你想解释什么就解释什么,因为我对这一切都比较陌生。是的,每首歌旁边都有一个删除。所以我决定只将id传递给函数。由于它现在可以工作,我对它非常满意,但我想了解更多关于document.ready函数的信息。当我提到它不起作用时,所以我正在考虑将其省略,但是,我觉得避免您描述的问题是非常必要的。我应该继续让我的代码使用它吗?如果我是动态的,我如何使ID唯一,但仍然能够获得函数中的所有内容?看起来你并不真的需要使用ID,相反,你可以将歌曲的ID存储在值中,就像我上面所做的那样,然后在jQuery中使用.val()
获得它。然后,您可以给所有按钮一个类deleteButton
,并用$('.deleteButton')将函数绑定到它们。单击(function(){…})
。不确定为什么$(document)。ready()
不起作用-您是否将它包含在另一个可能会干扰它的函数中?另外请注意,文档
周围不应该有”
s,即不要编写$('document').ready()
。(另外,我的另一个评论需要注意的是,如果您有大量的delete按钮,那么将click函数绑定到一个在
上带有,例如$(body).on('click','.deleteButton',function(){…})
的祖先元素可能更明智,尽管我上面写的仍然有效。
$(document).ready(function () {
$('#deleteButton').click(function () {
var answer = confirm("Are you sure you want to delete this song?");
if (!answer) {
return false;
}
var data = 'id=' + $(this).val();
$.ajax({
type: 'POST',
url: 'deleteSong.php',
data: dataString,
success: function (response) {
// response will contain the output from your php script.
// Do something with it here. If you just want to see what it
// says, do something like:
console.log(response);
// then look in the console (view > javascript console in chrome)
}
});
});
});