Javascript 为什么URI中无法识别用户名

Javascript 为什么URI中无法识别用户名,javascript,php,ajax,web-services,Javascript,Php,Ajax,Web Services,我试图通过URI传递用户名,但在控制台中,它表示未指定URI,可以在此基础上测试代码 AJAX function Putaccount() { //an account for the user $.ajax({ type: 'put', url: 'http://creative.coventry.ac.uk/~4078078/moviereviews/v1.0/index.php/user/adduser/' + $("#username").val(

我试图通过URI传递用户名,但在控制台中,它表示未指定URI,可以在此基础上测试代码

AJAX

function Putaccount() { //an account for the user
    $.ajax({
        type: 'put',
        url: 'http://creative.coventry.ac.uk/~4078078/moviereviews/v1.0/index.php/user/adduser/' + $("#username").val(),
        contentType: "text",
        data: {
            name: $("#name").val(),
            password: $("#password").val(),
            email: $("#email").val(),
            telephone: $("#telephone").val(),

            //pass the users details to the webservice
        },
        dataType: 'json',
        success: function (data) {
            alert("Account has been created. Log in using your username and password");
            $.mobile.changePage("#login"); //show the login page

        },
        error: function (response) {
            var r = jQuery.parseJSON(response.responseText);

            alert("Error:" + r.error.text);
        }
    });
}
PHP

function adduser_put($username = null) {

    // checking for valid parameters...
    {
        if (!isset($username)) {
            $info - > status = 'failure';
            $info - > error - > code = 36;
            $info - > error - > text = 'requested username not specified in URI';
            $this - > response($info, 400);
        }
    }
    $password = $this - > put('password');
    $telephone = $this - > put('telephone');
    $email = $this - > put('email');
    $name = $this - > put('name');
    //$dob = $this->put('date');
    // if the username and password parameters missing
    if (empty($password) || empty($email) || empty($telephone) || empty($name)) {
        $info - > status = 'failure';
        $info - > error - > code = 13;
        $info - > error - > text = '* All field are required';
        $this - > response($info, 400);
    }

    //check if the username already exists in the user table
    {
        $this - > load - > database();
        $sql = 'SELECT COUNT(userid) AS records FROM users WHERE username = "'.$username.
        '";';
        $query = $this - > db - > query($sql);
        $data = $query - > row();
        if ($data - > records == "1") {
            $info - > status = 'failure';
            $info - > error - > code = 14;
            $info - > error - > text = 'username already exists';
            $this - > response($info, 400);
        }
    }


    unset($data);
    $password = md5($password);
    $password = $this - > put('password');
    $data - > name = $this - > put('name');
    $data - > telephone = $this - > put('telephone');
    $data - > email = $this - > put('email');
    //$data->date = $this->put('date');
    $data - > username = $username;
    $authstring = $username.
    ':'.$password;
    $data - > authorization = base64_encode($authstring);
    $this - > db - > insert('users', $data);
    $info - > status = 'created';
    $info - > selfLink = 'http://creative.coventry.ac.uk/~4078078/moviereviews/v1.0/index.php/user/adduser/'.$username;
    unset($data - > authorization);
    $data - > password = $password;
    $info - > user = $data;
    $json = json_encode($info);
    $this - > response($info, 200);

}
HTML

<form id="register" class="ui-body ui-body-a ui-corner-all">
    <fieldset>
        <div data-role="fieldcontain">
            <label for="name">Name:</label>
            <input type="text" value="" name="name" id="name" />
        </div>
        <div data-role="fieldcontain">
            <label for="email">Email:</label>
            <input type="text" value="" name="email" id="email" />
        </div>
        <div data-role="fieldcontain">
            <label for="telephone">Telephone:</label>
            <input type="text" value="" name="telephone" id="telephone" />
        </div>
        <div data-role="fieldcontain">
            <label for="username">Username:</label>
            <input type="text" value="" name="username" id="username" />
        </div>
        <div data-role="fieldcontain">
            <label for="password">Password:</label>
            <input type="password" value="" name="password" id="password" />
        </div>
        <div>
            <input type="button" data-theme="a" name="submit" onclick="Putaccount()" value="Submit">
    </fieldset>
</form>

姓名:
电邮:
电话:
用户名:
密码:

这里有两件事,当我在你的页面上尝试$(“#username”)时,它返回一个文本区域而不是表单中的输入,重命名表单输入的id后,我看到输入有value=“”,编辑后它没有更改,因此从输入中删除该标记值并将id更改为用户名2,我得到了正确的值

尝试将html代码更改为:

<div data-role="fieldcontain">
    <label for="username">Username:</label>
    <input type="text" value="" name="username" id="username2" />
</div>

@Andrew lively:你不应该编辑一篇文章来将
->
更改为“-->”。很抱歉,你可以将编辑代码放在这里,因为我对它与“用户名”有点混淆。问题是在该页面中,你有两个id相同的元素“用户名”,一个是文本区域,另一个是你想要读取并生成uri的输入。
.ajax({
        type: 'put',
        url: 'http://creative.coventry.ac.uk/~4078078/moviereviews/v1.0/index.php/user/adduser/' + $("#username2").val()
....