【问题标题】:How can I get a PHP JSON-encoded object as a variable on Javascript/JQuery?如何在 Javascript/JQuery 上获取 PHP JSON 编码对象作为变量?
【发布时间】:2016-01-09 17:08:51
【问题描述】:

所以我使用 PHP 进行服务器端脚本,php 接收一个字符串作为 HTTP GET 请求,最后,它回显一个 JSON 对象。

如何使用 Javascript/JQuery 将此 JSON 回显作为 javascript 上的“var”?我想将此 JSON 对象用于客户端脚本。

$query = trim(strtolower($_GET["query"]), "?");
$stopList = array("much", "many", "the", "who", "what", "where", "when", "why", "how", "a", "is", "which", "so", "were", "there", "this", "did", "was", "will", "are", "you", "do", "I", "it", "are", "can", "i", "he", "she", "you", "did");
$templateFile = fopen("templates.txt", "r");
$templateList = array();
while(!feof($templateFile)) {
    array_push($templateList, fgets($templateFile));
}
fclose($templateFile);
$index = rand(0, count($templateList) - 1);
$template = $templateList[$index];
function makeTemplate($template, $subject, $stopList) {
    $listWords = explode(" ", $subject);
    $goodList = array_diff($listWords, $stopList);
    $answer = implode(" ", $goodList);
    $response = str_replace('#word', $answer, $template);
    return $response;

}
function containsUnwantedSymbol($haystack) {
    return substr($haystack, 0 , 1) === "#" || substr($haystack, 0, 1) === "@" || substr($haystack, 0, 4) === "http" || substr($haystack, 0, 5) === "https";;
}
require_once("TwitterAPIExchange.php");
$settings = array(
    "oauth_access_token" => "OAUTH_ACCESS_TOKEN_HERE",
    "oauth_access_token_secret" => "OAUTH_ACCESS_TOKEN_SECRET_HERE",
    "consumer_key" => "CONSUMER_KEY_HERE",
    "consumer_secret" => "CONSUMER_SECRET_HERE"
);
$url = "https://api.twitter.com/1.1/search/tweets.json";
$requestMethod = "GET";
$getField = "?q=".$query;
$twitter = new TwitterAPIExchange($settings);
$response = $twitter->setGetfield($getField)
                        ->buildOauth($url, $requestMethod)
            ->performRequest();
$details = json_decode($response, true);
$tweet = $details['statuses'][0]['text'];
$list = explode(" ", $tweet);
$against = array();
for($item = 0; $item < count($list); $item++) {
    if($list[$item] == "RT") {
        unset($list[$item]);
    }
}
for($item = 0; $item < count($list); $item++) {
    if(containsUnwantedSymbol($list[item]) || containsUnwantedSymbol($list[$item]) || containsUnwantedSymbol($list[$item])) {
        unset($list[$item]);
    }
}
$tweet = implode(" ", $list);
$dreet = makeTemplate($template, $query, $stopList);
$clauses = array("durhamResponse" => $dreet, "twitterResponse" => $tweet);
shuffle($clauses);
$json_clauses = json_encode($clauses);

echo $json_clauses;

注意在底部,我已经回显了我想在 Javascript 中使用的 JSON 对象。如何从 php 获取此对象作为 var 用于 Javascript?

$(document).ready(function() {
    $('#question').on('submit', function() {
        event.preventDefault();
        $.get("durhamServer.php", function() {
            $('#response1').load("durhamServer.php", $('#request').serialize());
        });
    });
});

此 Javascript 代码将 php 回显的值显示到 HTML 页面。我如何在 javascript 上将此值作为 var 获取,因为我想直接在客户端进行操作

【问题讨论】:

  • JSON 编码的数据将从 AJAX 调用函数传回。请向我们展示您进行 AJAX 调用的 JS/jQuery 代码,以便我们为您提供更好的答案,将 PHP 传递的数据转换回 JS 中的变量。
  • 怎么调用php脚本?用ajax还是直接?您可以使用jquery .ajax method 轻松实现这两种方式
  • 在 HTML 页面中添加了显示回显 PHP 值的 javascript。我怎样才能将这个值作为 var 获得?

标签: javascript php jquery json


【解决方案1】:

类似这样的:

$.ajax({
    type: "GET", 
    url: url,
    success: function(response) {
        var variables = response;
    }
});

【讨论】:

  • 我假设 var 变量是存储 php 结果的 javascript var?
【解决方案2】:

首先,您将使用 JQuery 的 Ajax 获取您的 PHP URL

http://api.jquery.com/jquery.ajax/

$.ajax({
  method: "GET",
  url: <your php url>,
  success : <a function to handle the success>,
  error : <a function to handle any errors>
})

您的“回显”php 内容将由success 函数(或error,如果有任何错误,如404500 等)处理

所以您的success 函数应该对来自服务器的数据进行处理。在 JQuery 文档中,JQ 如何安排来自服务器的数据:

Function( Anything data, String textStatus, jqXHR jqXHR )

所以你的回显 php 数据包含在第一个参数 data

success : function(myPhpData, textStatus, jqXHR){
    // your echoed php data is now on myPhpData and you can do whatever you want with it
}

请记住,Ajax 调用是异步的:success 函数只有在服务器响应后才会执行。如果您在 ajax 调用之后编写任何内容,您可能会面临竞争条件的风险——因此请了解如何控制 JavaScript 代码的流程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2012-06-10
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 2021-06-16
    相关资源
    最近更新 更多