![](/img/trans.png)
[英]How to make a json_encode returned object into a javascript variable
[英]Json object returned from PHP with json_encode() , but then invalid json object in my javascript
我将从mySQL表读取的简单关联数组回显到json_encode($ array)方法的我的jquery bmo。 但是,我的.ajax调用在jquery中失败,这似乎是由于该对象不是有效的json对象。 我在chrome中进行了一些调试,并在“网络”标签下验证了响应预览-确实看起来是完美的json格式:
{ “用户名”: “DehanL”, “的userPassword”: “管理”, “USEREMAIL”: “dehan@rocketmail.com”}
这是我的PHP:
<html>
<body>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbName ="dbPodiumPro";
$inUsername = $_POST["name"];
$inPassword = $_POST["password"];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbName);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//Use the dbPodiumPro
mysqli_select_db($conn,"dbPodiumPro");
$sql = "SELECT * FROM users WHERE UserName='$inUsername' AND UserPassword ='$inPassword' ";
$result = mysqli_query($conn,$sql);
// Fetch one row
$row=mysqli_fetch_assoc($result);
//Check to see if the username and password combo exists
if(!empty($row['UserName']) AND !empty($row['UserPassword']))
{
//$_SESSION['UserName'] = $row['UserPassword'];
//echo $_SESSION;
echo json_encode($row);
}
else { echo "Be gone imposter!"; }
$conn->close();
?>
</body>
</html>
然后是jQuery:
$.ajax({
type: 'POST', // define the type of HTTP verb we want to use (POST for our form)
url: 'php/loginrequest.php', // the url where we want to POST
data: formData, // our data object
dataType: 'json' // what type of data do we expect back from the server
})
// using the done promise callback
.done(function (data) {
console.log("ajax done callback");
})
.fail(function (data) {
console.log(data, "ajax failed callback");
var IS_JSON = true;
try {
var json = $.parseJSON(data);
} catch (err) {
IS_JSON = false;
}
console.log(IS_JSON);
});
在AJAX中将dataType
作为JSON选项添加时,不需要parseJSON
JSON。
在ajax
完成之后获取的data
已经是JSON格式。
“ json”:将响应评估为JSON并返回一个JavaScript对象。 JSON数据是严格解析的。 任何格式错误的JSON都会被拒绝,并引发解析错误。 从jQuery 1.9开始,空响应也被拒绝; 服务器应返回null或{}的响应。 (有关正确的JSON格式的更多信息,请参见json.org。)
文件: http : //api.jquery.com/jQuery.ajax/
fail
方法中的data
不是您从服务器传递的。 它是与请求有关的信息。
您的PHP像这样开始:
<html>
<body>
此后无论输出什么,它都不会是有效的JSON。
我在chrome中进行了一些调试,并在“网络”标签下验证了响应预览
查看原始预览。 您似乎正在查看渲染的 HTML预览。
如果您正在使用MD5等对密码进行编码,Json将不会进行编码,您可以选择从数组中取消设置密码,或者定义要从数据库中选择的列(不包括密码列)。
将您的ajax更改为
$.ajax({
type:"POST",
url: 'php/loginrequest.php',
data:$("#form_id").serialize(),
dataType:"json",
success: function(data)
{
alert(data.UserName);
}
});
您可以同时使用data:formData
或data:$("#form_id").serialize(),
如果您收到警报消息,那么一切正常
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.