将PHP echo结果传递给javascript函数并在视图中显示?

时间:2016-08-04 23:40:21

标签: javascript php json post

我试图将PHP API调用的JSON结果传递给将在视图中显示结果的函数。

curr = curr->next; 功能

script.js

基本上,您在视图的文本框中输入搜索字词,function ajaxProductsSearch() { products.empty(); preloader.css('visibility', 'visible') // Issue a request to the proxy $.post('test.php', { 'search': searchBox.val() } function($results) { // pass $results from test.php? if ($results.results_count == 0) { preloader.css('visibility', 'hidden'); message.html("We couldn't find anything!").show(); return false; } $.each() { // code to display in view? // var html = ''; // products.append(html); }; preloader.css('visibility', 'hidden'); }, 'json'); } 会将字符串发布到script.js脚本,然后运行API查询请求并按{{1}显示结果}。

2 个答案:

答案 0 :(得分:1)

这将最初显示您的结果,以便您继续进行开发。

function($results) { // pass $results from test.php?
    if ($results.results_count == 0) {
        ...
    }

    // toString won't provide a nice output, but it will
    // show your results object. Handling the results is 
    // dependent on the structure of your object.
    message.html($results.toString());
}

我建议用指向搜索结果的容器元素的jQuery对象替换message。

E.g。 <div id="search-results"></div>$("#search-results").html($results)

在风格上更好地从PHP返回JSON对象并使用您的javascript解析它,但我假设您刚刚返回一个包含您当前结果的字符串。

我建议你查看这些功能:

  • PHP json_encode()
  • jQuery $.parseJSON()

答案 1 :(得分:0)

<强>更新

我终于开始工作了,下面是代码,如果有人有兴趣的话。我不确定是否可以将$resultstest.php传递到script.js中的某个功能。 console.log($results)帮助确认API查询是否成功并存储在$results

function ajaxProductsSearch(){

    products.empty();
    preloader.css('visibility','visible');

    // Issue a request to the proxy
    $.post('test.php', {
        'search' : searchBox.val()
    },
    function($results) { // pass $results from test.php?

        console.log($results);
        if($results.results_count == 0){

            preloader.css('visibility','hidden');
            message.html("We couldn't find anything!").show();
            return false;
        }

        $.each($results.results, function(i,item) { // code to display in view?


            var html = '<a class="product" data-price="$ '+$results.results[i].price+'" href="'+$results.results.url+'" target="_blank">';

            console.log($results.results[0]);
            // If the product has images
            if($results.results[i].images && $results.results[i].images.length > 0){
                html += '<img alt="'+$results.results[i].name+'" src="'+ $results.results[i].images+'"/>';
            }

            html+='<span>'+$results.results[i].name.substr(0, 20)+'</span></a> ';
            products.append(html);
        });

        preloader.css('visibility','hidden');

    },'json');  
}