在JSON字符串中分隔PHP变量

时间:2015-05-06 21:16:45

标签: javascript php jquery ajax json

我有点迷失在如何解决我的问题。我有一些关于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分开是不行的。

提前谢谢你,我为语法错误和语言道歉!

2 个答案:

答案 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');