gpt4 book ai didi

php - AJAX 调用后,数据为空

转载 作者:搜寻专家 更新时间:2023-10-31 21:39:46 24 4
gpt4 key购买 nike

当我从表单进行 AJAX 调用时,它显示调用成功,但数据对象为空。代码如下:

$.ajax(
{
url: 'shipprocess.php',
dataType: 'json',
type: 'POST',
success: function(data)
{
alert('Data is: ' + data);
alert('The AJAX request was a success.');
},
'error': function()
{
alert('An unexpected error occurred.');
}
});
return false;

表单如下所示:

<div class="processedDate">
<form action="shipprocess.php" method="POST" id="shipProcess2" name="shipProcess2">
<input type="hidden" name="empID" value="1" />
<input type="hidden" name="thisOrderID" id="thisOrderID2" value="2" />
<label>Date Shipped </label>
<input type="text" name="shipDate" id="shipDate2" class="shipDate" size="20" value="" />
<input type="submit" name="shipped" id="shipped2" class="shipped" value="Shipped!" />
</form>
</div>

进行 AJAX 调用后,Firebug 显示状态为 200,内容长度为 0。处理表单的脚本称为 shipprocess.php。返回时回显如下数据:false;行被注释掉:

[ { "sd": "2012-09-17", "eid": "1", "oid": "2", "efn": "Johnathan", "eln": "Smith" } ]

出于某种原因,脚本不断提示数据为空。完整的例子可以在 http://www.yellowcas.com/ship/shipexample.php 找到。 .此示例显示了当您提交表单时数据对象为空的警告消息。我还有 shipprocess.php 脚本在 http://www.yellowcas.com/ship/shipexample1.php 返回的数据的完整示例。 .我之前使用 AJAX 为用户输入的邮政编码填充城市和州输入字段。 jQuery 脚本几乎完全相同,除了我使用 GET 而不是 POST 作为邮政编码形式。

我曾尝试将 PHP 中的 header 声明为 JSON 数据,但这也无济于事。 Firebug 似乎也没有给我任何有用的信息。我已经使用名为 testjson.html 的不同文件测试了脚本。在该文件中,我将有效的 JSON 数据作为文件中唯一没有标题的行,并将数据变量作为对象返回。该示例位于 www.yellowcas.com/ship/shipexample2.php。我不能发布超过 2 个超链接。如果您想查看 shipprocess.php 的代码,我很乐意将其发布。我只是不想让这篇文章太长。任何想法将不胜感激。谢谢。

我决定发布 shipprocess.php 代码,以确保您能看到我所做的事情。如下所示:

<?php
require_once('dblogin.php');
require_once('dbconnect.php');
require_once('funcs.php');
$err = array();
$datePattern = "!^(\\d\\d)[-/](\\d\\d)[-/](\\d\\d(?:\\d\\d)?)$!";
$psErr = "Shipping date is required.";
$emErr = "Employee ID is missing.";
$orErr = "Order ID is missing.";
if(isset($_POST['shipped']))
{
$postEID = clean($_POST['empID'],$emErr,$n);
$postOID = clean($_POST['thisOrderID'],$orErr,$n);
$postShipDate = clean($_POST['shipDate'],$psErr,$n);
$now = date("Y-m-d H:i:s");
if($postEID == $emErr)
{
$err[] = $postEID;
}
else
{
$query = "SELECT FK_UserID,FirstName,LastName FROM employees WHERE EmployeeID = '$postEID'";
$res = mysql_query($query);
if(mysql_num_rows($res) < 1)
{
$err[] = "Employee does not exist.";
}
else
{
while($row = mysql_fetch_assoc($res))
{
$retUserID = $row['FK_UserID'];
$retFirstName = $row['FirstName'];
$retLastName = $row['LastName'];
}
}
}
if($postOID == $orErr)
{
$err[] = $postOID;
}
if($postShipDate == $psErr)
{
$err[] = $postShipDate;
}
else
{
if (preg_match($datePattern,$postShipDate,$sMatches))
{
$sMonth = $sMatches[1];
$sDay = $sMatches[2];
$sYear = $sMatches[3];
if(checkdate($sMonth,$sDay,$sYear))
{
$shipDate = "$sYear-$sMonth-$sDay";
}
else
{
$err[] = "Invalid shipping date.";
}
}
else
{
$err[] = "Invalid Shipping Date";
}
}
if(empty($err))
// Keep processing the information if there are no errors.
{
$data[] = "$postEID,$shipDate,$postOID,$now,$retFirstName,$retLastName";
}
else
// Return the errors to the user so corrections can be made.
{
$data[] = implode(",",$err);
}
for ($i=0;$i<sizeof($data);$i++)
{
$info = explode(",",$data[$i]);
$data[$i] = $info;
}
$result = array();
for ($y=0;$y<sizeof($data);$y++)
{
if (($data[$y][0]) !== false)
{
array_push($result, array("sd"=>$data[$y][1], "eid"=>$data[$y][0], "oid" => $data[$y][2], "efn"=>$data[$y][4], "eln"=>$data[$y][5]));
}
if (count($result) > 2)
{
break;
}
}
}
echo array_to_json($result);
?>

请尝试我提供的三个示例页面,看看有什么不同的结果。谢谢。

最佳答案

您的代码至少缺少两件事:

1:使用Ajax 发帖时,必须发送发帖数据。所以你必须告诉你要发送什么数据。大多数时候它是序列化形式数据,但它可以是任何东西。

var dataString = 'name=Gr G';
$.ajax(
{
url: 'shipprocess.php',
dataType: 'json',
data: dataString,
type: 'POST',
...

2:你期待一个返回值,但你没有发送返回值。在处理后的 shipprocess.php 中,您应该回显如下内容:

...    
echo 'data received and processed';
...

关于php - AJAX 调用后,数据为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12596900/

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