我正在尝试在 WordPress 插件中执行 AJAX 请求。该请求是使用自定义短代码在嵌入在文章中的首页上发起的。
但是,在测试该方法时出了点问题……没有调用 AJAX 查询挂钩。
这就是我的page.php脚本被调用以进行短代码交付的方式:
add_shortcode('testshortcode', 'TestShortCodeFunction');
function TestShortCodeFunction($attributes)
{
ob_start();
include(__DIR__.'/page.php');
return ob_get_clean();
}
Run Code Online (Sandbox Code Playgroud)
这是我压缩的测试脚本page.php:
<?php
add_action('wp_ajax_test', 'Test');
add_action('wp_ajax_nopriv_test', 'Test');
// do_action('wp_ajax_nopriv_test'); this calls Test()
function Test()
{
echo 'Hallo';
die();
}
?>
<script type='text/javascript'>
jQuery(document).ready(function() {
console.log("JS query started");
// The following does not call test()
jQuery.ajax({
type: "POST",
url: "http://127.0.0.1/wordpress/wp-admin/admin-ajax.php?action=test",
success: function(data) {
console.log("Query returned: "+data);
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
控制台上的输出是:
JS query started …Run Code Online (Sandbox Code Playgroud) 我正在使用支持C99子集的自定义gcc编译器编写一些代码.使用编译器选项我定义了一个像这样的宏:
ENABLE_LOGGING=true
Run Code Online (Sandbox Code Playgroud)
我在我的代码中使用它,如下所示:
#if ENABLE_LOGGING
#define LOG(foo) { log(foo); }
#else
#define LOG(foo)
#endif
Run Code Online (Sandbox Code Playgroud)
事实证明,这不能可靠地运作.有时使用LOG包含代码,有时使用emtpy LOG(相同的项目,相同的编译器设置).
将宏参数更改为:
ENABLE_LOGGING=1
Run Code Online (Sandbox Code Playgroud)
一切正常.
据我所知,true预处理器可能不知道.但是,为什么它最常用?为什么在编译它不起作用的模块时,我没有得到任何警告或错误?
CHAR_BIT定义每个字符的位数.但它是一个古老的宏.在最近的C++标准中已经替换了类似的宏.
CHAR_BIT在C++ 11/14/17中是否有更现代的替代品?
我编写了以下C++ 17代码:
constexpr bool gDebug = true;
template <typename T> constexpr const T& Select(const bool pCondition, const T& a, const T& b)
{
if constexpr (pCondition)
{
return a;
}
else
{
return b;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我这样打电话:
int c = Select<QString>(gDebug, a, b); // In .cpp
Run Code Online (Sandbox Code Playgroud)
我找到error: ‘pCondition’ is not a constant expression了这if constexpr条线.
为什么?这不应该工作吗?
我必须编写一个程序(不使用向量,也不使用结构或OOP)来计算两个多项式的和与乘积。这是我的代码:
//Task 4.19 & 4.20
#include <iostream>
#include <cmath>
double* definePoly(char& symbol, char& coef, int& k)
{
std::cout << "deg(" << symbol << "(x)) = ";
std::cin >> k;
symbol++;
double* a = new double[k];
for (int i = k; i >= 0; i--)
{
std::cout << coef << "_{" << i << "} = ";
std::cin >> a[i];
}
coef++;
return a;
}
void printPoly(int n, double* P, char& symbol)
{
symbol--;
std::cout << symbol << "(x)=";
for (int …Run Code Online (Sandbox Code Playgroud)