2013-05-22 195 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 
     }, 
...