我是一个完整的AJAX菜鸟,所以请原谅我,但这就是我想要做的...... 我有一个php表单,通过ajax将信息提交给解析器文件。我需要从该表单中获取一些ID到解析器文件,以便我可以在我的sql更新中使用它们。我会尝试保持我的代码简单,但提供足够的信息,以便有人可以回答。
我的表单是通过foreach循环生成的,它遍历一个团队列表并抓住它们的各种特征。为简单起见,假设我需要访问解析器文件的主要内容是team_id。
我不确定是否需要添加
###Piece of code to find the palindrome####
def palindrome():
Palindromee = input("Enter the palindrome \t:")
index = 0
length = len(Palindromee)
while index < length:
if Palindromee[0] == Palindromee[-1] :
index +=1
print ("Palindrome worked as expected")
palindrome()
或
<input type="hidden" name="team_id" value="<?=$team->id ?>">
或类似于我的表格....但不管怎样,它都会通过这个AJAX文件...
<tr data-teamid="<?=$team->id; ?>">
正在进入我的解析器文件,看起来像这样......
<script type="text/javascript">
function updateNames() {
jQuery('#form-message, #form-errors').html("");
var post_data = jQuery('form[name="update_names"]').serialize();
$.ajax({
url: 'parsers/update_names.php',
method: 'POST',
data : post_data,
success: function(resp) {
if(resp == 'success'){
jQuery('#form-message').html("Names and Scores have been Updated!");
}else{
jQuery('#form-errors').html(resp);
}
}
});
return false; // <--- important, prevents the link's href (hash in this example) from executing.
}
jQuery(document).ready(function() {
$(".linkToClick").click(updateNames);
});
</script>
SO。我的主要问题是如何将camp_id和team_id放入解析器文件中,以便我可以使用它们来更新我的数据库?
第二个问题是......这个形式是由foreach循环生成的,这使得ajax难以知道要更新哪个字段?
那么,我怎么能把camp_id带到
require_once '../core/init.php';
$db = DB::getInstance();
$errors = [];
// $camp_id = Input::get('camp_id');
$camp_id = 18;
//Find the Teams that Belong to the Camp
$sql = "SELECT * FROM teams WHERE camp_id = $camp_id";
$teamsQ = $db->query($sql);
$all_teams = $teamsQ->results();
//validation and sanitization removed for simplicity.
if(empty($errors)){
$fields = [];
foreach($_POST as $k => $v){
if($k != 'camp_id'){
$fields[$k] = Input::get($k);
}
}
$db->update('teams',$all_teams->id,$fields);
echo 'success';
}else{
echo display_errors($errors);
}
和team_id到
$sql = "SELECT * FROM teams WHERE camp_id = $camp_id";
我试图将其分解为最简单的形式,但仍然没有进入该功能。这段代码......
$db->update('teams',$all_teams->id,$fields);
给我......未捕获的ReferenceError:未定义updateNames
答案 0 :(得分:0)
jQuery .serialize()
方法使用元素的name
属性来指定变量名称。它会忽略元素的id
,任何class
es和任何其他属性。因此,如果使用.serialize()
:
<input type="hidden" name="team_id" value="<?=$team->id ?>">
查看您的ajax代码,您的解析器文件将被称为parsers/update_names.php
。
要验证所需字段是否已到达解析器文件,请将其添加到顶部以进行临时测试:
<?php
$tid = $_POST['team_id'];
echo 'Returning: ' .$tid;
die();
并暂时将ajax代码块修改为:
$.ajax({
url: 'parsers/update_names.php',
method: 'POST',
data : post_data,
success: function(resp) {
alert(resp);
{
});
return false;
如果ajax处理器文件(您的“解析器”)收到team_id
数据,那么您将在警告框中将这些数据返回给您。
因此,您现在可以确定:
1. That you are receiving the team_id information;
2. That the ajax back-and-forth communications are working
请注意,您还可以从php处理器文件中install FirePHP并将文本回显到浏览器的控制台。