我的Ajax调用不提交给php

时间:2012-09-09 16:15:21

标签: php ajax

以下片段应该是收集数据并将其发送到php文件。 它会在点击按钮时输出正确的值。

var dataString = 'username='+SessionVars.my_username+'&lessonid='+SessionVars.my_lesson_number;
$('#tracking_submit').click(function(){
$.ajax({
    url: "php/tracking.php",
    type:'POST',
    data: dataString,
    success: function(){
    $('#tracking_message').replaceWith(SessionVars.my_username+"Thank you for updating."+SessionVars.my_lesson_number);
    }                   
    });
return false;   
});

然后我正在使用的php文件部分就是:

session_start(); 
mysql_connect("stuff i tested and it works");
mysql_select_db("same");

$username=$_POST['username'];
$lessonid=$_POST['lessonid'];

mysql_query("INSERT INTO tracking ( username, lessonid ) VALUES ( ".$username.", ".$lessonid." );");

当我检查数据库时,其中没有任何内容。

4 个答案:

答案 0 :(得分:2)

mysql_query("INSERT INTO tracking ( username, lessonid ) VALUES ('".$username."', ".$lessonid." );");

你错过了该行的引用。另外,请阅读SQL Injection

答案 1 :(得分:1)

这不起作用,因为您没有将查询中的值放入引号中。这应该有助于防止你被黑客攻击:

mysql_query("INSERT INTO tracking ( username, lessonid ) VALUES ( '".mysql_real_escape_string($username)."', '".mysql_real_escape_string($lessonid)."' )");

答案 2 :(得分:1)

更改为..

$.ajax({
    url: "php/tracking.php",
    type:'POST',
    cache: false,
    dataType: "json",
    data: {username: SessionVars.my_username, lessonid: SessionVars.my_lesson_number}, 
    success: function(){
    $('#tracking_message').replaceWith(SessionVars.my_username+"Thank you for updating."+SessionVars.my_lesson_number);
    }                   
    });
return false;   
});

在下一页上做一个print_r($ _POST)。也是的,你应该读一些sql注入预防。

答案 3 :(得分:0)

问题出在php文件中,使用上面这个人的帮助解决了这个问题:

$username=mysql_real_escape_string($_POST['username']);
$lessonid=mysql_real_escape_string($_POST['lessonid']);

mysql_query("INSERT INTO wtf ( username, lessonid ) VALUES ( '".$username."', '".$lessonid."' );");