从php文件+ajax获取数据

Posted

技术标签:

【中文标题】从php文件+ajax获取数据【英文标题】:Get data from php file + ajax 【发布时间】:2013-05-17 10:08:40 【问题描述】:

我想用 javascript 获取加载到我的 php 文件中的数据。 我就是这样做的:

$("#submit").click(function() 
    // GET VALUE OF APPID
    var appid = $("#appid").val()
    // GET JSON FROM PHP SCRIPT
    $.ajax(
        type: 'GET',
        url: '../loadjson.php',
        data: 
            'appid': appid
        ,
        success: function (data) 
            alert('success');
        ,
        error: function(jqXHR,error, errorThrown)   
            if(jqXHR.status&&jqXHR.status==400)
                alert(jqXHR.responseText); 
            else
                alert("Something went wrong");
            
        
    );

);

当我点击一个按钮时,我会得到一个文本框的值并调用 ajax 函数。 我的 javascript 文件位于 root/js/file.js 中,我的 php 文件位于 root/loadjson.php 中

我的 PHP 文件:

<?php

if(isset($_POST['appid']) && !empty($_POST['appid'])) 
    $appid = $_POST['appid'];

$json_url  ='http://api.url.com/api/gateway/call/1.4/getApp?appid=' . $appid;

$ch = curl_init($json_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$str = curl_exec($ch);
curl_close($ch);

$data = json_decode($str);

$array = $data;
$object = $array->app[0]; 

echo $object;

?>

问题是我总是收到一个带有“出现问题”的警告框,但我找不到解决方案。有人看出我的错了吗?

我明白了:

jsfiddle:http://jsfiddle.net/wKe2U/

【问题讨论】:

尝试提醒一些有用的东西,比如alert(thrownError); 我已经这样做了,但它没有显示任何内容。只是一个空的警报框... 帮我了解$array = $data; 需要什么? @Rikesh 我们知道这不是 400 错误,您可以使用浏览器中的开发人员工具查看请求和响应吗? 请提供网址或jsFiddle。 【参考方案1】:

您并没有阻止您的表单提交,您正在使用表单和 输入按钮提交类型。因此,当您单击该按钮时,您的 正在提交的表格。所以,首先你在你的 ajax 代码。

第二件事是您在 ajax 代码中使用了 get 方法,并且 试图通过 'POST' 在您的 php 代码中获取值。所以,请使用 $_GET 或更改 ajax 代码类型:'POST'

第三件事是您的网址无效,您应该使用 url:'loadjson.php'

我在这里分享代码:

//Ajax code
$(function () 
    $("#submit").click(function (e) 
        // stop form submission first
        e.preventDefault();
        // GET VALUE OF APPID
        var appid = $("#appid").val()
            // GET JSON FROM PHP SCRIPT
            $.ajax(
                type : 'POST',
                url : 'loadjson.php',
                data: 'appid':appid,
                success : function (d) 
                    alert(d);
                ,
                error : errorHandler
            );
    );
);

function errorHandler(jqXHR, exception) 
    if (jqXHR.status === 0) 
        alert('Not connect.\n Verify Network.');
     else if (jqXHR.status == 404) 
        alert('Requested page not found. [404]');
     else if (jqXHR.status == 500) 
        alert('Internal Server Error [500].');
     else if (exception === 'parsererror') 
        alert('Requested JSON parse failed.');
     else if (exception === 'timeout') 
        alert('Time out error.');
     else if (exception === 'abort') 
        alert('Ajax request aborted.');
     else 
        alert('Uncaught Error.\n' + jqXHR.responseText);
    

希望你明白你错在哪里:)

【讨论】:

【参考方案2】:

我不确定,但在你的 js 代码中我看到了

 type: 'GET',

但是在你的 php 代码中使用 POST 方法来加载值

if(isset($_POST['appid']) && !empty($_POST['appid'])) 
    $appid = $_POST['appid'];

【讨论】:

我不想取回 json 但取决于我发送的值。 为什么不在你的 php 中使用 get 方法? 问题出在您的 php 脚本中。尝试在 php 代码中使用的打印变量。【参考方案3】:

尝试给予

网址:'loadjson.php'

在你的 js 文件中

【讨论】:

【参考方案4】:

您正在发出GET ajax 请求,并且您依赖脚本中的$_POST 信息,只需使用$_GET

您收到未定义变量$appid 的通知,单击您的开发工具中的红色行以查看您收到的响应以及相关的错误代码。

【讨论】:

【参考方案5】:
$.ajax(
        type: 'GET',
        url: '../loadjson.php',
        datatype: 'json' ,
        data: 
            'appid': appid
        ,
...

【讨论】:

以上是关于从php文件+ajax获取数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 php 和 jquery ajax 从 mysql 数据库中获取数据

使用 jQuery 的 $.ajax( ) 函数从 php 文件中获取 JSON 数据不起作用

通过 Ajax 解析 PHP 文件获取的 JSON 数据时出现问题

无法从 js 文件中获取数据

从 WebKitFormBoundary PHP 获取图像/文件数据

使用php,ajax从数据库中获取数据