我正在努力创建一个网站。 我需要在ajax中创建一个IF-ELSE。它基本上调用了一个名为“greeting”的输入内容,如果用户插入特定文本则为“YES”,否则为“NO”。
jQuery(document).ready(function () {
var greeting = jQuery("#greeting").val();
jQuery("#push-me").click(function () {
jQuery.ajax({
type: 'POST',
url: 'http://www.boatsandbeats.com/wordpress/wp-admin/admin-ajax.php',
data: {
action: 'myAjax',
greeting: jQuery("#greeting").val(),
},
success: function (data, textStatus, XMLHttpRequest) {
if (data == "XYZ") == 0 {
jQuery("#test-div").html('');
jQuery("#test-div").append("YES");
} else {
jQuery("#test-div").html('');
jQuery("#test-div").append("NOPE");
}
},
error: function (MLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
});
});
虽然其余代码工作得很好,但它无法识别IF并将所有内容视为真实(因此,打印“是”)。
任何人都可以这么善良并向我解释一下吗?
答案 0 :(得分:2)
因为if语句错误而无效
if (data == "XYZ") == 0 {
应该是
if (data.greeting == "XYZ") {
}
答案 1 :(得分:1)
Step 1:
检查你的ajax是否真的返回了什么。
...//add the following line
success: function (data, textStatus, XMLHttpRequest) {
console.log(data);
alert("Data logged." + data);
...
Step 2:
你想测试什么?
您想知道数据(ajax返回)是否为字符串且该字符串的值是否为“XYZ”?
//change
if (data == "XYZ") == 0
//to
if (data === "XYZ")
请注意,===
三联==
与===
不同。区别在于 /* strA.localeCompare(strB); Returns:
0: exact match
-1: strA < strB
1: strB > strA
*/
将检查变量是否具有相同的值和相同的类型。
此外,在Javascrip中可以比较类似于您的风格的字符串,例如使用localeCompare():
if(data.localeCompare(“XYZ”)=== 0)
function myAjax()
{
$greeting = $_POST['greeting'];
if (isset($_POST['greeting']))
$greeting = $_POST['greeting'];
$results = "<h2>".$greeting."</h2>";
die($results);
}
<强>更新强>
假设你的php功能如下:
{
//$greeting is being assigned a value from POST greetings, // in post is empty then $greeting will be empty as well.
$greeting = $_POST['greeting'];
//You are validating POST greeting, although you already captured it's value and put it in $greeting, so why not using $greeting here instead?
if (isset($_POST['greeting']))// this if has no {} so ONLY the first line after will be included in this IF condition.
$greeting = $_POST['greeting'];
// this line will be exectue no matter what, so the value of $greeting will be entered into a string enclosed with <h2> tags. if POST greeting is empty, then $greeting will be empty of course.
$results = "<h2>" . $greeting . "</h2>";
//the variable $result now has "<h2></h2>" as it's value if $greeting is empty.
die($results); //echoing $result, or
}
这就是将要发生的事情。
"#greeting").val()
因此,您已确认收到“
在您的JS中,您将ajax{data{greeting:jQuery("#greeting").val() }}
分配给变量问候语,然后将该变量用作 var greeting = jQuery("#greeting").val();// what is the use of this line?
的数组属性
data: {
"action": 'myAjax',
"greeting": jQuery("#greeting").val(),// what is the value of "#greeting").val()?
},
将您的对象属性用“”封闭,例如“问候语”。
{{1}}
答案 2 :(得分:0)
IF
条件系统看起来不对,
if (data == "XYZ") == 0
您应该只使用,不需要== 0
if (data == "XYZ"){
//.... code here
}
或者json
if (data.key == "XYZ"){
//.... code here
}
答案 3 :(得分:0)
首先你需要检查数据是否会精确打印XYZ或打印[Object object] if [Object object]然后你需要检查data.d ==“XYZ”
答案 4 :(得分:0)
成功函数首先解析然后像这样比较
var response=$.parseJSON(data);
if(response.field=="XYZ")
{
jQuery("#test-div").html('');
jQuery("#test-div").append("YES");
}
else
{
jQuery("#test-div").html('');
jQuery("#test-div").append("NOPE");
}