我有点迷失在如何解决我的问题。我有一些关于PHP的代码,它通过数组传递数据(错误,页面(id,名称,标题等),并且该数组已经使用parseJSON设置。如果我提醒响应,我将得到一个具有正确值的数组但我的问题是,响应总是不同,因此PHP变量会发生变化。
我尝试过像responseText.pageid或responseText.error [1]这样的东西,但这不起作用,因为它可能不同。而且我不知道是否需要将其称为responseText.pageid,因为在数组中它是$ pageid或者其他不同的东西......
所以警告responseText给了我一个好的结果,但分离它不会不幸地工作。
我的JS代码:
// Variables
var content_page = $('#content-page').val();
var content_url = 'action=chose&page='+content_page;
/* Starting AJAX post form */
$.ajax({
type: 'POST',
dataType: "JSON",
url: 'handlers/content.handler.php',
data: content_url,
success: function(responseText)
{
var obj = $.parseJSON(responseText);
console.dir(obj.error);
if(obj.error[1] > -1)
{
noty({ text: 'U hebt geen pagina gekozen!' });
}
else if(obj.error[2] > -1)
{
noty({ text: 'De gekozen pagina bestaat niet!' });
}
else if(obj.error[100] > -1)
{
noty({ text: 'Uw pagina wordt opgehaald...' });
}
}
});
return false;
});
我的PHP代码:
// Storing the variables.
$stringPage = trim($_POST['page']);
$error = array();
$bolean = false;
// Prepared statement.
$stmt = $mysqli->prepare('SELECT id,name,title,text FROM pages WHERE name = ?');
$stmt->bind_param('s', $stringPage);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($pageID, $pageName, $pageTitle, $pageText);
$stmt->fetch();
$intPage = $stmt->num_rows();
$stmt->close();
# Controle
if(empty($stringPage))
{
$error[] = 1;
$bolean = false;
}
if($intPage == 0)
{
$error[] = 2;
$bolean = true;
}
if($bolean == false)
{
$error[] = 100;
}
header('Content-Type: application/json');
$aVariables = array('error' => $error, 'id' => $pageID, 'name' => $pageName, 'title' => $pageTitle, 'text' => $pageText);
echo json_encode($aVariables, JSON_FORCE_OBJECT);
我用谷歌搜索并得出结论,我需要从parseJSON中创建一个变量,但不幸的是我得不到任何结果。我当前的结果(http://prntscr.com/72c39h)正在运行,但是将它与responseText.home分开是不行的。
提前谢谢你,我为语法错误和语言道歉!
答案 0 :(得分:1)
调用JQuery的parseJSON()
时,您必须正确调用它,例如$.parseJSON()
,并将其存储在变量中,例如var obj = $.parseJSON(responseText);
,根据documentation。
答案 1 :(得分:1)
不需要var obj = $.parseJSON(responseText);
,此responseText
已经是json格式。如果您想访问error
,只需通过responseText.error
或'alert(responseText.error);'来引用它。而且也没有必要设置header('Content-Type: application/json');