【发布时间】:2016-04-12 12:10:56
【问题描述】:
我在 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文件(成功函数中的alert和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/Bootstrap ecc... 都包含在主 html 文件和 HTML 生成器 PHP 文件中(正常工作)。
然而,我似乎无法调用这个包含所有服务器逻辑作为对按钮的响应的 php 文件。业务代码无关紧要,因为按钮触发器至少应该在 if 条件之外调用警报。 我已经关注了与此问题相关的堆栈溢出的所有答案,但它不起作用。我还尝试添加变量的完整路径,但没有。如您所见,我所有的文件都在这个文件夹中:Files on Server。 那么为什么我不能调用那个服务器端的 PHP 脚本呢? 谢谢。
编辑:我使用一种全新的方法解决了这个问题!我离开了 jQuery,每次有人提交表单时我都会为页面重新充电,我将通过 POST 在生成 HTML 的同一文件中检索数据。为什么我不能从 javascript 调用服务器?坦白说,我不知道。在其他情况下,它一直有效。总之谢谢大家。
【问题讨论】:
-
ajaxphp不应该是
'./wp-content/plugins/freework/fw-ajaxphp.php';吗? -
调试时会发生什么?是否进行了 AJAX 调用?服务器的响应是什么?
-
@MattWebb 那是一个包含路径的变量。 Marko,你有什么回应吗?从控制台检查。
-
您需要养成accepting answers 的习惯,它可以帮助您解决问题。您将获得积分,并鼓励其他人帮助您。
-
@MattWebb 没有两点是正确的。
标签: javascript php jquery ajax wordpress