【发布时间】:2018-03-07 22:42:18
【问题描述】:
我正在使用以下 AJAX 调用 PHP 函数:
$.ajax({
url : 'php/jstranslator.php',
type : 'post',
data : {'action' : 'campaignnamecheck',
'newcampaignname' : campaignname,
'oldcampaignname' : oldcampaignname },
success : function(result) {
check = result;
console.log("campaignnamecheck: " + check);
},
error : function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
}
});
接收此调用的 php 如下所示:
if ($_POST['action'] == "campaignnamecheck") {
$newcampaignname = $_POST['newcampaignname'];
$oldcampaignname = $_POST['oldcampaignname'];
campaignnamecheck($newcampaignname,
$oldcampaignname);
}
campaignnamecheck 函数如下所示:
function campaignnamecheck($newcampaignname, $oldcampaignname) {
$conn = conn();
echo "php oldcampaignname: " . $oldcampaignname;
// Select any campaigns
$campaignsql = "SELECT CampaignName " .
"FROM campaignstest " .
"WHERE CampaignName = '" . $newcampaignname . "' ";
if(!$campaignresult = $conn->query($campaignsql)){
die('There was an error running the query "' . $campaignsql . '" [' . $conn->error . ']');
}
// If the campaign name remained the same as before it is a safe campaign name
if ($newcampaignname == $oldcampaignname) {
} else {
// If the campaign name changed, or if it's a new campaign, then check to see if the name already exists in the database
if ($campaignresult->num_rows == 0) {
echo "true";
} else {
echo "false";
}
}
}
我在 apache 错误日志中收到的错误如下:
[Wed Mar 07 16:30:00.330318 2018] [:error] PHP Warning: Missing argument 2 for campaignnamecheck(), called in /var/www/html/test/php/jstranslator.php on line 110 and defined in /var/www/html/test/php/campaignsfuncs.php on line 747
[Wed Mar 07 16:30:00.330779 2018] [:error] PHP Notice: Undefined variable: oldcampaignname in /var/www/html/test/php/campaignsfuncs.php on line 749
当我在 chrome 上查看控制台的网络选项卡时,我可以看到您已设置的值:
action:campaignnamecheck
newcampaignname:test
oldcampaignname:none
我到底错过了什么?
【问题讨论】:
-
您是否检查过发送到您页面的帖子?像这样:
if ($_POST['action'] == "campaignnamecheck") { $newcampaignname = $_POST['newcampaignname']; $oldcampaignname = $_POST['oldcampaignname']; if(!empty($newcampaignname) && !empty($oldcampaignname)) campaignnamecheck($newcampaignname, $oldcampaignname); } -
您在上面提供的代码实际上来自第 110 行吗? “/var/www/html/test/php/jstranslator.php 在第 110 行”......有点令人困惑,因为它的设置就在被调用的正上方。
-
我建议您在
$oldcampaignname = $_POST['oldcampaignname'];之后立即执行var_dump($oldcampaignname);以查看它是否已设置。如果是,那么就在$conn = conn();之后做同样的事情。它将帮助您找出问题的根源。 -
即使post var是空的(甚至丢失了,如果丢失了
Notice: Undefined index:会报错,这是不存在的,所以post var 必须存在)... 做$oldcampaignname = $_POST['oldcampaignname'];无论如何都会设置$oldcampaignname。所以在函数调用中使用它就在它下面应该传递了一些东西,因为它会是第二个参数。即使您将其设置为 null...它传递一个参数并且不会导致该错误。 -
是的,没错,但我相信我们遗漏了一些代码。