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参数的方式有问题,但我不确定如何正确地进行。
下面是我在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 :(得分:1)
你最好的&#34; 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 =&#34; hellostring = 1&#34;;
Array( [hellostring] => "1" )
这意味着,在服务器端,您可以:
$_123 = $_POST["hellostring"];
案例 mydata = {title:&#34; some&#34; ,价值:&#34;事物&#34; };
结果,你得到:
Array
(
[title] => some
[value] => thing
)
所以你可以:
$title = $_POST['title']; $value = $_POST['value'];
案例 mydata = [1,2,3];
惊喜,这不起作用,:),你应该用这种形式包装它:
mydata = {some:[1,2,3]}
因此,您可以像上一个案例一样在服务器端继续。
注意:强>
为避免被黑客攻击:( PHP CASE示例)使用以下方法过滤输入:
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"
?>
答案 1 :(得分:0)
尝试将其作为常规javascript对象传递
var dataObj = {'username': username};
$.ajax({
type: "POST",
url: "signinout.php",
data: dataObj,
答案 2 :(得分: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>');
}
});