2013-05-22 153 views
4

我想要获取载入到我的PHP文件中的数据。 这是我做的:从php文件中获取数据+ ajax

$("#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文件位于根/ JS/file.js和根我的PHP文件/ 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; 

>

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

我得到这个: enter image description here

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

+0

试着提醒像'警报(thrownError)一些有用的东西;'。 – Rikesh

+0

我已经这样做了,但它没有显示任何东西。只是一个空的警报框... – nielsv

+0

帮我理解你需要什么'$ array = $ data;'for? – Robert

回答

3

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

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

第三件事是您的网址是无效的,你应该使用 网址:“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); 
    } 
} 

希望,你明白的地方,你错了:)

+0

是的,非常感谢! :) – nielsv

0

尽量给

网址:在JS 'loadjson.php'

文件

+0

也没有工作:/ – nielsv

2

我不是当然,但在你的js代码我看到

type: 'GET', 

但在你的PHP代码使用POST方法加载值

if(isset($_POST['appid']) && !empty($_POST['appid'])) { 
    $appid = $_POST['appid']; 
} 
+0

我不想取回一个JSON,但取决于我发送的价值。 – nielsv

+0

为什么你不使用get方法在你的PHP? – franki3xe

+0

问题出在您的php脚本中。尝试使用您在php代码中使用的打印变量。 – franki3xe

0

您发出GET Ajax请求,你是依靠在你的脚本$_POST信息,只需使用$_GET

您将收到未定义var $appid的通知,单击devtools中的红色行以查看您正在收到的响应以及相关的错误代码。

0
$.ajax({ 
     type: 'GET', 
     url: '../loadjson.php', 
     datatype: 'json' , 
     data: { 
      'appid': appid 
     }, 
...