2016-05-14 41 views
0
var username = $('#username').val(); 

var dataString = 'username=' + username; 

    $.ajax({ 
     type: "POST", 
     url: "signinout.php", 
     data: dataString, 
     success: function() { 
      $('.user').html('<span>Welcome <span id="loggedUser">' + username + '</span>!</span> <a id="signOut" onclick="window.location.reload()">SIGN OUT</a>'); 
     } 
    }); 

使用上面的代码,我的用户名变量没有正确传递,我假设我编写datastring参数的方式有问题,但我不知道如何正确地执行它。如何正确传递jquery的.ajax()函数的datastring参数?

下面是我在signinout.php中使用的php代码将用户名插入到数据库中,用户名字段不会与每个新条目一起输入到数据库中。

$username = protect($_POST['username']); 
$time = time(); 

$sql = "INSERT INTO users 
    (username, join_date) 
     VALUES 
    ('$username', '$time')"; 
$result = mysqli_query($cn, $sql) or 
    die(mysqli_error($cn)); 
+0

VAR dataString = '用户名=' +用户名;将此行替换为var dataString = {'username':username}; – GrvTyagi

+0

data:dataString,用数据替换:{'username':username}, – Poria

回答

1

你的 “最佳” datastring依赖于服务器端的部分您的需求。作为一个例子,这个jQuery的Ajax调用发送对象到服务器端操作(PHP):

var mydata = null; 

mydata = "hellostring=1"; 
mydata = { title: "some" , value: "thing" }; 
mydata = [1,2,3]; 

$.ajax({ 
    cache: false, type: 'post', async: true, 
    data: mydata, 
    url: 'some-script.php', 
    success: function(resp){ 
     console.log("OK",resp); 
    }, 
    error: function(e){ 
     console.log(e.responseText); 
    } 
}); 

至于结果,在发球方面,你可能有这样的脚本,它会返回相同的发送:

// some-script.php 
<?php 
    echo print_r($_POST,true); 
?> 

的输出,对于每个类型的数据(见MYDATA变量)是:

案例:MYDATA = “hellostring = 1”;

Array([hellostring] => "1")  

这意味着,在服务器端,您可以:

$_123 = $_POST["hellostring"]; 

案例 MYDATA = {标题: “一些”,值: “东西”};

至于结果,你会得到:

Array 
(
    [title] => some 
    [value] => thing 
) 

,因此您可以:

$title = $_POST['title']; $value = $_POST['value']; 

案例 MYDATA = [1,2,3];

惊讶的是,这并不工作,:),你应该把它包起来,以这种形式:

MYDATA = {一些:[1,2,3]}

所以,你可以在你的前进服务器端与前一种情况相同。

注:

为了避免遭受过黑客攻击:(PHP案例)使用筛选输入:
http://php.net/manual/es/function.filter-input.php

为了有一个更先进的数据处理在您的服务器端部分(即:在接收ajax请求的脚本中),您可以通过以下方式使用json:

让通过假设你是通过JavaScript发送对象开始:

// in your client part, 
    mydata = { title: "some" , value: "thing", mydog: "sammy" }; 
    ..do your ajax call stuff here.. 

而且,在你的服务器端:

<?php 
     // some-script.php 
     $obj = json_decode(file_get_contents('php://input')); 
     echo $obj->title; // output: "some" 
     echo $obj->value; // output: "thing" 
     echo $obj->mydog; // output: "sammy" 
    ?> 
+0

你应该得到这样一个详细的答案upvote。你太好了 – mkoryak

0

尝试把它当作一个普通的JavaScript对象

var dataObj = {'username': username}; 
$.ajax({ 
    type: "POST", 
    url: "signinout.php", 
    data: dataObj, 
+0

我该怎么做?我的JavaScript不是那么好 –

+0

已更新的东西 – mkoryak

+0

代码似乎并没有使其工作,是否有可能是我的代码的另一部分是错误的? –

0

尝试使用data: "username="+username,代替

var username = $('#username').val(); 

$.ajax({ 
    type: "POST", 
    url: "signinout.php", 
    data: "username=" + username, 
    success: function() { 
     $('.user').html('<span>Welcome <span id="loggedUser">' + username + '</span>!</span> <a id="signOut" onclick="window.location.reload()">SIGN OUT</a>'); 
    } 
});