1

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

脚本:

<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

4 回答 4

1

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

data:{'fname=': _firstname, 'lname=':_lastname,'gender=':_gender,'location=': _location}
于 2013-02-27T10:30:52.537 回答
0

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

data: {'fname': _firstname, 'lname':_lastname .... }
于 2013-02-27T10:32:52.417 回答
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>

此外,从元素中获取值的方法也不正确。如果名字、姓氏和其他字段在文本框中,那么您应该像这样访问那些。

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

或者,如果它们在 span 或 div 标签中,则访问这样的

var _firstname=$("#firstname").text();
于 2013-02-27T10:34:36.380 回答
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% 正确的结果。

于 2013-02-27T10:37:08.683 回答