我有一个调用Twitter 1.1 API的PHP脚本,并返回50个ID号。然后我使用Foreach参数将结果单独打印到页面上。我希望将每个不同的ID号存储在按钮中作为隐藏值,然后使用JQuery Ajax将该值发布到不同的PHP页面以进行进一步处理,而无需离开或刷新50个ID号的页面。
如果我使用这个Foreach参数,50个ID号是数组中的第一个结果,而不是50个个人ID号,这不是我想要的:
foreach ($Results as $arrResult) {
$IDstring = $arrResult['id_str'];
print("<form id='RT' onsubmit='return submitForm();'>
<input type='hidden' name='id' value=$IDstring>
<input type='submit' value='ReTweet'></form>
");
}
但是,如果我从Foreach参数中删除此部分,则会将50个单独的ID号打印到表单的隐藏值中:
onsubmit='return submitForm();'
问题是我的JQuery脚本正在侦听submitForm,如果没有该行,JQuery将无法运行。这是我的JQuery脚本:
<script>
function submitForm() {
$.ajax({type: 'POST', url: 'results.php', data: $('#RT').serialize()});
return false;
}
</script>
我知道删除onsubmit ='return submitForm();'从Foreach给我50个唯一的ID号,因为这段代码将打印50个按钮,每个按钮包含单独的值。但是因为没有jQuery脚本监听submitForm,我必须添加 method ='post'action ='results.php 以便POST按钮的值,但这意味着页面results.php加载这不是我想要的:
foreach ($Results as $arrResult) {
$IDstring = $arrResult['id_str'];
print("<form id='form' method='post' action='results.php'>
<input type='hidden' name='id' value=$IDstring>
<input type='submit' value='ReTweet'></form>");
}
所以,我希望foreach打印50个唯一的ID号,同时也让我使用JQuery Ajax脚本。我希望这很清楚,我不知道如何描述我想做的事情:D
答案 0 :(得分:2)
好的,现在我明白你要做什么了。我会这样做。
PHP:
<?php
foreach ($results as $arrResult) {
$tweetId = $arrResult['id_str'];
print('<button type="button" class="mark-tweet" data-tweet-id="' . $tweetId . '"><br/><br/>');
}
JavaScript的:
$(function() {
$('.mark-tweet').click(function() {
var id = $(this).attr('data-tweet-id');
$.ajax({
type: 'POST',
url: 'results.php',
data: {tweetId : id}
});
})
.done(function() {
alert('The tweet has been deleted');
})
.fail(function() {
alert('Oops, something went wrong! Please try again.');
});
});
注意:我没有像你那样大写$ Results中的'r'。只有类名应以大写字母开头(类在OOP中,而不是CSS)
答案 1 :(得分:0)
你需要呈现的是带有onclick
的50个按钮,它们将调用你的markTweet()
JS功能&amp;传递它的ID - 这可以做AJAX帖子。无需任何表格。
或者,您可以使用单独的ID('form'。$ tweetId)渲染50个表单,每个表单都有一个隐藏的输入&amp;提交按钮(或只是一个<button>
,因为BUTTON元素可以具有与其内容不同的名称和值),以及调用`postTweetForm('form $ {tweetId})'的onclick
- - 从而将所选表单的ID传递给JS函数。
真的,既然你是用JS做的,那么保持用户界面简单&amp;让JS做这项工作最简单。这是一个开始的例子。 PHP:
foreach ($Results as $arrResult) {
$tweetId = $arrResult['id_str'];
print("<button type='button' onclick='markTweet('".$tweetId."');'><br>\n");
}
使用Javascript:
function markTweet (tweetId) {
$.post({
url: 'results.php',
data: {'tweetId': tweetId}
);
}
你还应该在你的AJAX帖子中加入一个success
处理程序。淡入一点点绿色标记或其他东西,以便用户知道它有效,因为它并不总是如此。 (我会让你玩这个。)
试试..然后继续提问。它现在大大改善了也许可以帮助别人。