为什么可以'我从jQuery/AAJAX调用这个PHP文件
Why can't I call this PHP file from jQuery/AJAX?
我在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/Bootstrapp ecc。。。都包含在主html文件和html生成器PHP文件中(正常工作)。
然而,我似乎无法调用这个php文件,它包含所有服务器逻辑作为对按钮的响应。业务代码是不重要的,因为按钮触发器至少应该在if条件之外调用警报。我已经遵循了关于堆栈溢出的所有答案,但它不起作用。我还尝试添加变量的完整路径,但没有添加任何内容。正如您所看到的,我的所有文件都在这个文件夹中:服务器上的文件。那么,为什么我不能调用服务器端的PHP脚本呢?非常感谢。
编辑:我用一种全新的方法解决了这个问题!我不使用jQuery,每次有人提交表单时,我都会给页面充值,并通过POST在生成HTML的同一文件中检索数据。为什么我不能从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
行应该可以解决问题,但请注意,这样就不能将返回的数据用作对象。但在这个特定的示例中,这并不重要,因为您根本没有使用返回的数据。
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 如何在单击复选框后调用控制器方法
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 使用Google Visualization动态调用构造函数
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 调用函数内部的函数
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- 为什么可以'我从jQuery/AAJAX调用这个PHP文件
- 在JSON/AAJAX调用之后,我如何在页面中选择一个特定的按钮(从许多按钮中)