通过AJAX到PHP的表单值首先被截断然后不被识别

时间:2014-02-27 18:11:50

标签: javascript php jquery ajax

提交以下表单:

<form name="register" method="post" onSubmit="registerUser();">
    <fieldset>
        <label for="user_name">Name</label>
            <input name="user_name" type="text" id="user_name" placeholder="Name" />
        <label for="user_email">Email</label>
            <input name="user_email" type="email" id="user_email" placeholder="Email"/>
        <label for="user_password">Password</label>
            <input name="user_password" type="password" id="user_password" placeholder="Password" />
        <input name="s" type="hidden" value="register" />
    </fieldset>
    <input type="submit" value="Register" />
</form>

通过AJAX

function registerUser(){
    var myform = $("form[name='register']"),
    data = {};
    myform.find('[name]').each(function(index, value){
        var that = $(this),
            name = that.attr('name'),
            value = that.val();
        data[name] = value;
    });
    $.ajax({
        url: urlService,
        type: 'POST',
        data: data,
        success: function(response){
        }
    });
    return false;
}

当在下面的PHP语句中回应时,“寄存器”的“s”值被切断为“注册”。所以为了更正它,我在之前的jQuery语句中转义了这些值:

value = escape(that.val());

然后允许传递完整值,尽管在名称值中添加“%20”。我继续如下......

转发给PHP

print_r($_POST);
try{
    $db = new PDO('mysql:host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
    switch($_POST['s']){
        case 'register':
            $response = 'registered ok + ';
        break;
        case 'login':
        break;
    }
    $response = 'services read';
    echo $response;
} catch(PDOException $e){
    echo $e->getMessage();
}

此时所有$ _POST值都被回显,但是“SWITCH语句”无法识别“register”的值。

我不确定我做错了什么,也不确定...在清理这些故障方面的任何帮助都将不胜感激。

0 个答案:

没有答案