以下行是什么意思?
jQuery.post('/codes/handlers/delete_a_question.php',
{ question_id: jQuery(this).attr('question_id') }
HEAD中的上下文,
jQuery('a.delete_question').live('click', function(){
jQuery.post('/codes/handlers/delete_a_question.php',
{ question_id: jQuery(this).attr('question_id') },
function(data){
alert ("Output of the delete.php -page: " + data );
// `data` is probably unnecessary
})
});
/codes/delete_a_question.php
中的处理程序,
$dbconn = pg_connect("host=localhost port=5432 dbname=noa user=noa password=123");
$result = pg_prepare ( $dbconn, "delete_question_query",
"DELETE FROM questions
WHERE question_id = $1"
);
$result = pg_execute ( $dbconn, "delete_question_query", array ( $_GET['question_id'] ) );
header( "Location: /codes/index.php?successful_removal");
HTML,
echo ("<a href='#' class='delete_question'"
. " id=question_id'" . $question_id . "'" // to have question_id777
. ">delete</a>"
);
如果用户首先通过从GET获取question_id来点击链接,我试图删除一个问题。但是,我还没有设法让jQuery代码工作。我得到以下弹出窗口,问题没有删除。
在使用一个(
解决问题并将$_GET
更改为$_POST
之后,我现在以弹出式this code获取。
答案 0 :(得分:2)
如果您将其翻译成普通英语,请输入以下代码:
jQuery.post('/codes/handlers/delete_a_question.php',
{ question_id: jQuery(this).attr('question_id') }
读取:
“使用参数'question_id'向'/codes/handlers/delete_a_question.php'异步发出POST请求,其值应该是'this'的'question_id'html属性的值。”
在您的情况下,“此”将指向被点击的链接以删除问题。它正在寻找名为“question_id”的属性,该属性不是锚标记的有效HTML属性(或XHTML)属性。这可能会导致问题。
您在链接标记中存储问题ID的位置?如果您正在使用XHTML,您可以使用“rel”属性,它的工作是定义锚和它链接的内容之间的关系(在这种情况下,它可能是链接和要删除的问题之间的关系)。
所以改变这个:
<a href="#" class="delete_question" question_id="123">delete</a>
对此:
<a href="#" class="delete_question" rel="123">delete</a>
然后在你的javascript / jQuery中改变这个:
{ question_id: jQuery(this).attr('question_id') }
到此:
{ question_id: jQuery(this).attr('rel') }
答案 1 :(得分:1)
使用HTTP POST加载远程页面 请求。
在这种情况下,加载delete_a_question.php
第二个参数是键/值对或将发送到服务器的.serialize()函数的返回值。
在这种情况下,点击的锚点的属性 question_id 将被采用
功能(数据)
是成功加载数据时要执行的回调函数。
将处理程序绑定到匹配元素的事件。
在这种情况下,绑定点击事件处理程序。
答案 2 :(得分:1)
$.post的方法签名是:
jQuery.post( url, [data], [callback], [type] )
所以在这一行:
jQuery.post('/codes/handlers/delete_a_question.php',
{ question_id: jQuery(this).attr('question_id') }
第一个字符串参数是发送请求将发送到的URL,第二个是包含数据作为键/值对的对象。第三个(在你的代码出现在下一行的情况下)是一个回调函数。唯一必需的参数是第一个。
JQuery的$ .post方法封装了一个$.ajax调用,类型选项设置为“POST”。
答案 3 :(得分:1)
您的解决方案与您的问题并不完全相关,但您错过了PHP中)
行的pg_execute
,这就是错误的原因。
答案 4 :(得分:1)
在我看来,问题出在PHP代码中,而不是jQuery -
您遇到的问题可能与您使用$ _GET方法获取参数“question_id”的事实有关:
$_GET['question_id']
仅从GET请求中检索参数。在这种情况下,您正在发出POST请求(使用jQuery.post()函数),因此您应该使用
$_POST['question_id']
代替。