gpt4 book ai didi

php - jQuery,$.post() 未访问目标网址

转载 作者:行者123 更新时间:2023-11-28 16:19:16 26 4
gpt4 key购买 nike

在下面的代码中,有一个目标 url test_location_jquery.php 的 XMLHTTPRequest,尽管触发了 success 函数,但从未访问过该文件。当单独运行测试 test_location_jquery.php 时,已成功返回 JSON 对象。任何有关如何在未访问文件时触发成功函数的想法将不胜感激。

JQUERY

<?php

require_once '../meta/php/dbConn.php';

$charlie_query = "";
$charlie_result = "";

$charlie_query = "
SELECT ud.user_id as 'id',
concat(ud.last_name,', ',ud.first_name) as 'name'
FROM `user_detail` AS ud,
`user_type` AS UT
WHERE ud.user_type = ut.id
AND ut.class IN ('charlie')
AND ut.level IN (4)
ORDER BY ut.class;
";
$charlie_result = mysql_query($charlie_query);

if(!(bool)$charlie_result){
throw new Exception();
}

?>

<html>
<head>

<script src="../meta/js/jquery-1.7.2.js"></script>
<!-- <script src="../meta/js/getXML_sir.js"></script> -->
<script>
$(document).ready(function(){
$('#charlie').change(function(){
var charlie_id = $('#charlie option:selected').val();
var DT = "json";

$.post(
'test_location_jquery.php',
{'id':charlie_id,'datatype':DT},
function(data){
alert('Success');
var obj = $.parseJSON(data);
}
);

if(obj != 'undefined'){
var locations = obj.find('location');
console.log(locations);
}else{
alert("failure");
}

})
})

</script>

</head>
<body>

<form>
<label>Charlie: </label><select id="charlie" name="charlie">
<option>&nbsp;</option>
<?php
while($row = mysql_fetch_assoc($charlie_result)){
print("<option value='".$row['id']."'>".$row['name']."</option>");
}
?>
</select>
<label>Location: </label><select id="location" name="location"></select>
</form>

<div></div>

</body>
</html>

test_location_jquery.php

<?php

require_once("../meta/php/dbConn.php");

if(!isset($_POST)){
throw new Exception();
}else{
$id = $_POST['id'];
$datatype = $_POST['datatype'];
}

$query = "
SELECT l.id as 'id',
ld.attribute_string as 'name'
FROM `location` AS l,
`location_details` AS ld
WHERE l.id = ld.location_id
AND ld.attribute_label = 'name'
AND l.id = ".$id.";
";
$result = mysql_query($query);

if(!(bool)$result){
throw new Exception();
}else{
switch($datatype){
case 'xml':
break;
case 'json':
$rows = array();
while($r = mysql_fetch_assoc($result)) {
$rows[] = $r;
}
return json_encode($rows);
break;
}


?>

最佳答案

您的.post()函数是异步的。这意味着调用 .post() 只是启动帖子。它后面的几行在 post() 完成之前和调用成功处理程序之前立即执行。

然后,一段时间后,成功处理程序被调用。

使用帖子响应的所有代码必须位于成功处理程序中或从成功处理程序中调用。

因此,您的问题是您无法引用此代码所在的成功处理程序中的数据集(紧接在 .post() 调用之后)。您必须将此代码放入成功处理程序本身中。

            if(obj != 'undefined'){
var locations = obj.find('location');
console.log(locations);
}else{
alert("failure");
}

因此,完成此操作后,您的代码将如下所示:

<script>
$(document).ready(function(){
$('#charlie').change(function(){
var charlie_id = $('#charlie option:selected').val();
var DT = "json";

$.post(
'test_location_jquery.php',
{'id':charlie_id,'datatype':DT},
function(data){
alert('Success');
var obj = $.parseJSON(data);
if(obj != 'undefined'){
var locations = obj.find('location');
console.log(locations);
}else{
alert("failure");
}
}
);


})
})

</script>

关于php - jQuery,$.post() 未访问目标网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com