2012-04-11 153 views
-2

我在从ajax调用插入查询时遇到了一些问题。 ajax调用会成功返回,我可以使用更改后的html来查看它,如下面的代码中所示:success()。我不知道为什么process.php中的插入查询不起作用。 dataString的参数是正确的(dataString的alert需要显示正确的参数),我的数据库中的字段可以为空值。在php中插入查询不能与ajax一起工作

js代码

var dataString=$('#testimonials').serialize(); 

    alert (dataString); 

    $.ajax(
    { 
    type: "POST", 
    url: "process.php", 
    data: dataString, 
    success:function() { 
     $('#testimonials').html("<div id='message'></div>"); 
     $('#message').html("<h2>Your information has been submitted!</h2>") 
     .append("<p>Thank you for your help and support.</p>") 
     .hide() 
     .fadeIn(1500, function() 
     { 
     $('#message').append("<img id='checkmark' src='images/check.png' height='30' width='30'/>"); 
     }); 
    }); 

process.php文件

$company =mysql_escape_string($_POST('company')); 
    $jobfunc = mysql_escape_string($_POST('jobfunc')); 
    $location = mysql_escape_string($_POST('location')); 
    $overall = mysql_escape_string($_POST('overall')); 
    $detail = mysql_escape_string($_POST('detail')); 
    $pros = mysql_escape_string($_POST('pros')); 
    $cons = mysql_escape_string($_POST('cons')); 
    $sr_mgmt = mysql_escape_string($_POST('sr_mgmt')); 
    $submitted_by = mysql_escape_string($_POST('submitted_by')); 
    $class = mysql_escape_string($_POST('classof')); 
    $school = mysql_escape_string($_POST('school')); 
    $anonymous = mysql_escape_string($_POST('anonymous'));  

    mysql_select_db($database_connTest, $connTest); 

    $query_AddTestimonial = "INSERT into testimonials (company,job_function,location,overall,project_details,pros,cons,sr_mgmt,submitted_by,class,school,anonymous) VALUES ('$company','$jobfunc','$location','$overall','$detail','$pros','$cons','$sr_mgmt','$submitted_by','$class','$school','$anonymous')"; 
    $result_AddTestimonial = mysql_query($query_AddTestimonial) or die(mysql_error()); 
+0

您需要从此URL URL:“process.php”'传递要插入到数据库中的参数。 – Lion 2012-04-11 22:46:19

+0

我相信他是通过dataString来做到这一点的。 – 2012-04-11 22:47:16

+0

你是什么意思,它不工作..你有任何错误输出?或者它没有插入数据库? – Baba 2012-04-11 22:56:14

回答

0

在当你创建$ query_AddTestimonial,你要创建不把PHP变量中,因为你的字符串中的倒数第二行并不是说它们是变数。您可以使用PHP变量是这样的:

$query_AddTestimonial = "INSERT into testimonials (company,job_function,location,overall,project_details,pros,cons,sr_mgmt,submitted_by,class,school,anonymous) VALUES ('{$company}','{$jobfunc}','{$location}','{$overall}','{$detail}','{$pros}','{$cons}','{$sr_mgmt}','{$submitted_by}','{$class}','{$school}','{$anonymous}')"; 
+0

最后一行的第二行(在process.php文件中)。 – 2012-04-11 23:03:43

+0

Ben,我尝试使用变量的方式来定义它,但仍然没有将记录插入到mySQL中。不是$ _POST负责将值分配给在process.php中声明的变量。例如,在$ company = $ _POST ['company']中,不是$ company,这种情况下的变量是从$ _POST ['company']分配的值吗?还有其他建议吗? – amey1908 2012-04-12 01:55:28

+0

我只是通过在sql查询中放入静态值来检查插入语句,插入与ajax调用一起工作。所以问题在于传递参数。我尝试了许多方法来定义参数,但它不起作用。有没有人有什么建议?到目前为止,我已经尝试在$ .ajax函数下将数据定义为data:dataString和data:{company:'Yahoo',jobfunc:'operations'....和data:{company:company_name,jobfunc:jobfunction)为company_name和jobfunction分配值,但不幸的是这些解决方案都不起作用。 – amey1908 2012-04-12 04:43:11

0

的问题是与我打电话变量的方式。它应该是$ _POST ['company']而不是$ _POST('company')。完全错过了它($ _POST自从它的一个数组后的方括号)