gpt4 book ai didi

javascript - 为什么我不能从 jQuery/AJAX 调用这个 PHP 文件?

转载 作者:行者123 更新时间:2023-11-28 15:10:45 24 4
gpt4 key购买 nike

我有这段 PHP 代码(路径:../wp-content/plugins/freework/fw-freework.php)

<div id="new-concept-form">
<form method="post" action="../wp-admin/admin.php?page=FreeWorkSlug" class="form-inline" role="form" onsubmit="addNewConcept()">
<div class="form-group">
<label for="new_concept_text">Nuovo concetto:</label>
<input type="text" class="form-control" id="new_concept_text">
</div>
<div class="form-group">
<label for="new_concept_lang">Lingua:</label>
<select class="form-control" id="new_concept_lang">
<option>it</option>
<option>en</option>
<option>de</option>
<option>fr</option>
</select>
</div>
<button type="submit" class="button-aggiungi btn btn-default">Aggiungi</button>
</form>
</div>

按下按钮时,将调用此 JavaScript(它会在显示警报并正确检索数据时工作):

var ajaxphp = '../wp-content/plugins/freework/fw-ajaxphp.php';

function addNewConcept()
{
conceptName = document.getElementById('new_concept_text').value;
lang = document.getElementById('new_concept_lang').value;

alert('Inserting: ' + conceptName + " " + lang);

$.ajax({
type: 'POST',
url: ajaxphp,
async: true,
dataType: 'json',
data: {conceptNm : conceptName, conceptLang : lang },
success: function() {
alert("-------------------------------- Data sent!!");
console.log("-------------------------------- Data sent!!");
}

});

return true;
}

现在,正如您在javascript中看到的,我想通过ajax调用另一个PHP文件(成功函数中的警报和console.log未被调用/无法访问)。

<?php
// HTML Page -> JavaScript -> fw-ajaxphp.php -> XML Vocabulary

echo 'alert("PHP called")';
// echo $_POST['conceptNm'];
// TODO change vocab when done testing
$xml_file = '../wp-content/plugins/freework/fw-custom-vocabulary-test.xml';

$xml_vocab = new DOMDocument;
if (isset($_POST['conceptNm']) && isset($_POST['conceptLang']))
{
// ADD NEW CONCEPT
echo 'alert("PHP chiamato")';
// irrelevant business code here...
echo 'alert("Modifica avvenuta")';
}
?>

JQuery/Bootstrapp ecc...都包含在主 html 文件和 HTML 生成器 PHP 文件中(正常工作)。

但是,我似乎无法调用这个 php 文件,该文件包含所有服务器逻辑作为对按钮的响应。业务代码是无关紧要的,因为按钮触发器至少应该在 if 条件之外调用警报。我已遵循与此问题相关的堆栈溢出的所有答案,但它不起作用。我还尝试添加变量的完整路径,但什么也没有。如您所见,我的所有文件都在这个文件夹中:Files on Server 。那么为什么我不能调用服务器端 PHP 脚本呢?谢谢。

编辑:我通过使用全新的方法解决了这个问题!我离开了 jQuery,每次有人提交表单时我都会重新加载页面,并且我将在生成 HTML 的同一个文件中通过 POST 检索数据。为什么我无法从 javascript 调用服务器?坦白说我不知道​​。在其他情况下,它一直有效。不管怎样,谢谢大家。

最佳答案

这是你的问题:

$.ajax({
type: 'POST',
url: ajaxphp,
async: true,
dataType: 'json',
^^^^^^^^^^^^^^^^ Wrong data type

然后你就可以:

<?php
// HTML Page -> JavaScript -> fw-ajaxphp.php -> XML Vocabulary

echo 'alert("PHP called")';
...

您指定返回的数据类型为 json。但是,在您的 php 脚本中,您正在回显字符串,因此您的 ajax 调用将失败,因为 jQuery 无法将返回的数据解析为 json。

删除 dataType 行应该可以解决您的问题,但请注意,您不能将返回的数据用作对象。但这在这个特定示例中并不重要,因为您根本没有使用返回的数据。

关于javascript - 为什么我不能从 jQuery/AJAX 调用这个 PHP 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36572874/

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