gpt4 book ai didi

php - 将 json_encode 与 jquery.ajax() 一起使用时如何返回特定值?

转载 作者:行者123 更新时间:2023-12-01 08:23:01 24 4
gpt4 key购买 nike

我想知道如何在 jquery.ajax() success 函数中引用特定变量。

我在 addit.php 上的 php 代码

if ($_POST) {
$user_id = $_SESSION['user_id'];
$filename = $_SESSION['filename'];
$quote = $_POST['quote'];

$query = "INSERT INTO `submissions` (
`id` ,
`user_id`,
`quote` ,
`filename` ,
`date_added` ,
`uploaded_ip`
)
VALUES (
NULL , '{$user_id}', '{$quote}', '{$filename}', NOW(), '{$_SERVER['REMOTE_ADDR']}')
";

$db = DbConnector::getInstance();
$db->insert($query);

// remove funky characters from the quote
$cleanRemove = preg_replace("/[^a-zA-Z0-9\s]/", "", $quote);

// replace any whitespace with hyphens
$cleanQuote = str_ireplace(" ", "-", $cleanRemove);

// get the id of the last row inserted for the url
$lastInsertId = mysql_insert_id();

$returnUrl = array ("lastId"=>$lastInsertId, "cleanQuote"=>$cleanQuote);
echo json_encode($returnUrl);
}

我的 jQuery 代码:

        $.ajax({
type: "POST",
url: "addit.php",
data: ({
// this variable is declared above this function and passes in fine
quote: quote
}),
success: function(msg){
alert(msg);
}
});

警报中的返回:

{"lastId":91,"cleanQuote":"quote-test-for-stack-overflow"}

我现在如何在成功函数中引用它?我正在尝试类似的方法,但它不起作用(在警报中返回“未定义”):

        $.ajax({
type: "POST",
url: "addit.php",
data: ({
// this variable is declared above this function and passes in fine
quote: quote
}),
success: function(data){
alert(data.lastId,data.cleanQuote);
}
});

最佳答案

响应 JSON 似乎没有被解析为对象,这就是 alert() 显示整个字符串的原因(否则您会看到 [object Object])。您可以自己解析它,但更好的解决方案可能是执行以下一项(或两项)操作:

  1. dataType = "json" 添加到对 ajax() 的调用中,以告诉 jQuery 您需要 JSON 作为响应;然后 jQuery 将解析结果并为您提供一个可以使用的 data 对象,而不仅仅是一个字符串。另请注意,alert() 仅接受一个参数,所有后续参数都将被忽略。

  2. 更新您的 PHP 以使用正确的内容类型进行响应 header('Content-type: application/json'); - 这将允许 jQuery 自动找出响应是 JSON它会为您解析它,而不需要 dataType 值。这也将使其他使用者更容易,因为您将显式指定数据类型。

关于php - 将 json_encode 与 jquery.ajax() 一起使用时如何返回特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6104859/

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