通过ajax发布值时更新表字段时出错

时间:2013-02-27 10:28:36

标签: php javascript ajax jquery

我试图通过ajax更新学生的个人资料,脚本运行良好我得到了dataString中传递的所有值,但是当通过ajax调用savebasic.php时,它没有更新字段的值。

的Jscript:

<script type="text/javascript" src="http://ajax.googleapis.com/
ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".savestudent").click(function() {

    var _firstname=$("#firstname").html();
    var _lastname=$("#lastname").html();
    var _gender=$("#gender").html();
    var _location=$("#location").html();
    var _aboutme=$("#about").html();
    var _dob=$("#dob").html(); 

    var dataString= 'fname='+ _firstname + '&lname='+ _lastname + '&gender='+ _gender + '&location='+ _location + '&about='+ _aboutme + '&dob='+ _dob ;
    alert(dataString);

    $.ajax
    ({

    type: "POST",
    url: "savebasic.php",
    data: dataString,
    cache: false,
    success: function(html)
    {

        alert('success');
    },
    error: function(html)
    {


    }
    });
    });
});

</script>

savebasic.php:

<?php

include_once('controller/profile.controller.php');
$profileObject=new ProfileController();

        $fname=$_POST['fname'];
        $lname=$_POST['lname'];
        $gender='M';
        $loc=$_POST['location'];
        $about=$_POST['about'];
        $birth=$_POST['dob'];   

$upt=$profileObject->updateUserprofile('59',$fname,$lname,$birth,$gender,$loc,$about);

?>

如果我直接在savebasic.php上传递值,它就可以了。但是在通过ajax时却什么也没做。

4 个答案:

答案 0 :(得分:1)

您正在以错误的方式在ajax中使用数据字段。你应该这样做:

data:{'fname=': _firstname, 'lname=':_lastname,'gender=':_gender,'location=': _location}

答案 1 :(得分:0)

您的数据字符串设置为GET - 正常的语法是:

data: {'fname': _firstname, 'lname':_lastname .... }

答案 2 :(得分:0)

Change your code to assign data in following way


<script type="text/javascript" src="http://ajax.googleapis.com/
ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".savestudent").click(function() {

    var _firstname=$("#firstname").html();
    var _lastname=$("#lastname").html();
    var _gender=$("#gender").html();
    var _location=$("#location").html();
    var _aboutme=$("#about").html();
    var _dob=$("#dob").html(); 

    var data= {     fname:_firstname,
                    lname:_lastname,
                    gender=: _gender ,
                    location:_location,
                    about: _aboutme,
                    dob: _dob};
    alert(data);

    $.ajax
    ({

    type: "POST",
    url: "savebasic.php",
    data: data,
    cache: false,
    success: function(html)
    {

        alert('success');
    },
    error: function(html)
    {


    }
    });
    });
});

</script>

此外,从元素中获取值不正确。 如果firstname,lastname和其他字段在文本框中,那么您应该访问这些字段。

var _firstname=$("#firstname").val();

或者如果它们是span或div标签,那么访问像这样的

var _firstname=$("#firstname").text();

答案 3 :(得分:0)

您的数据部分是错误的。你还忘了提到dataType 我已经编辑了你的代码。

检查出来:

<script type="text/javascript" src="http://ajax.googleapis.com/
ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".savestudent").click(function() {

    var _firstname=$("#firstname").html();
    var _lastname=$("#lastname").html();
    var _gender=$("#gender").html();
    var _location=$("#location").html();
    var _aboutme=$("#about").html();
    var _dob=$("#dob").html(); 

   // var dataString= 'fname='+ _firstname + '&lname='+ _lastname + '&gender='+ _gender + //'&location='+ _location + '&about='+ _aboutme + '&dob='+ _dob ;
   // alert(dataString);

    $.ajax
    ({

    type: "POST",
    contentType: 'text/html',
dataType: 'text',
    url: "savebasic.php",
    data: {
      fname: _firstname, lname :_lastname, gender :_gender, location : _location 
      ,about : _aboutme , dob : _dob
    },
    cache: false,
    success: function(html)
    {

        alert('success');
    },
    error: function(html)
    {


    }
    });
    });
});

</script>

这将为您提供100%正确的结果。