我想获取用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;
?>
问题是我总是收到一个警告框,其中显示“出了点问题”,但找不到解决方案(https://i.stack.imgur.com/IlP9Y.png)。有人知道哪里出错了吗?
Try to give
url: 'loadjson.php'
in your js file
I am not sure but in your js code I see
type: 'GET',
but in your php code use POST method to load value
if(isset($_POST['appid']) && !empty($_POST['appid'])) {
$appid = $_POST['appid'];
}
You are issuing a GET
ajax request, and you are relying on $_POST
information in your script, just use $_GET
.
You are getting a notice for undefined var $appid
, click on the red row in your devtools to see the response you are getting, and associated error code.
$.ajax({
type: 'GET',
url: '../loadjson.php',
datatype: 'json' ,
data: {
'appid': appid
},
...
You are not preventing your form submission, you are using form and input button submit type. So, while you clicking on that button your form being submit. So, first you stop your form submission in your ajax code.
Second thing is that you are using method get in your ajax code and trying to get values by 'POST' in your php code. So, kindly use $_GET or change ajax code type: 'POST'
Third thing is that your url is invalid you should use url:'loadjson.php'
here I am sharing code:
//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.
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.
' + jqXHR.responseText);
}
}
Hope, you understand where you were wrong :)