Javascript IF-ELSE语句不起作用
我正在尽力创建一个网站。 我需要在ajax中创建一个IF-ELSE。它基本上将输入的内容称为“问候语”,如果用户插入特定文本,则目标是写“是”,否则写“否”Javascript IF-ELSE语句不起作用,javascript,jquery,ajax,if-statement,Javascript,Jquery,Ajax,If Statement,我正在尽力创建一个网站。 我需要在ajax中创建一个IF-ELSE。它基本上将输入的内容称为“问候语”,如果用户插入特定文本,则目标是写“是”,否则写“否” jQuery(document).ready(function () { var greeting = jQuery("#greeting").val(); jQuery("#push-me").click(function () { jQuery.ajax({ type: 'POST
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,并将所有内容都视为true(因此,打印“YES”)
有谁能这么好心地向我解释一下吗?它不起作用,因为你的if语句是错误的
if (data == "XYZ") == 0 {
应该是
if (data.greeting == "XYZ") {
}
如果
条件系统出现错误
if (data == "XYZ") == 0
您应仅使用,无需==0
if (data == "XYZ"){
//.... code here
}
或者如果ajax响应出现在json
if (data.key == "XYZ"){
//.... code here
}
首先,您需要检查数据是否准确打印XYZ或打印[Object]
如果[Object Object],则需要先在success函数中检查data.d==“XYZ”,然后进行如下比较
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");
}
步骤1:
检查ajax是否确实返回了一些内容
...//add the following line
success: function (data, textStatus, XMLHttpRequest) {
console.log(data);
alert("Data logged." + data);
...
步骤2:
您想测试什么?
您想知道数据(ajax返回)是否是一个字符串,并且该字符串的值是否为“XYZ”
请注意三元组==
与=
不同。区别在于==
将检查变量是否具有相同的值和类型
此外,在Javascrip中,可以比较与您的样式相似的字符串,如使用:
if(data.localeCompare(“XYZ”)==0)
用“”括起对象属性,例如“问候语”
呃,这是什么-->
如果(data==“XYZ”)==0
改为检查data.d。此外,如果您的if混淆请检查您的控制台“if(data==“XYZ”)==0”这是一个错误的状态这将导致语法错误(Derek指出的原因)-甚至不会注册“click-even”。阅读错误控制台。感谢您的帮助!但是,这也不起作用,因为现在即使输入“XYZ”,它也始终为false。我很难理解why@user3381904首先检查firebug控制台中的ajax响应console.log(数据)代码>或警报(数据);在ajaxsuccess函数中,
@user3381904,console.log help()@user3381904,会让我知道你是否需要任何帮助OK我检查了控制台日志,它基本上说它在发布函数中的内容。php myAjax(){$greeting=$$\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\($results);}但它实际上显示“NOPE”。这怎么可能?非常感谢您的帮助!步骤1:“警报”应该做什么?除了div文本像往常一样更改为“NOPE”外,实际上什么都没有发生。步骤2和3:两种方法都尝试过,没有成功:(什么也没有发生?或者它发出警报但警报中没有消息?我假设'data'变量为空。是的,它确实有效,对此表示抱歉。警报会显示“data logged”(数据已记录)然后,从ajax返回的数据变量的内容是,而不是XYZ。检查您的php文件,看看它有什么作用,仅供将来参考。我假设您已经在使用控制台进行调试。如果没有,请点击F12打开控制台。如果您使用Firefox,请尝试安装Firebug。如果您使用Google Chrome F12就足够了。打开控制台后,您实际上可以看到所有ajax请求以及服务器返回的内容。这样您的调试过程就会容易得多。感谢您的帮助!新语句没有成功
//change
if (data == "XYZ") == 0
//to
if (data === "XYZ")
/* strA.localeCompare(strB); Returns:
0: exact match
-1: strA < strB
1: strB > strA
*/
function myAjax()
{
$greeting = $_POST['greeting'];
if (isset($_POST['greeting']))
$greeting = $_POST['greeting'];
$results = "<h2>".$greeting."</h2>";
die($results);
}
{
//$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
}
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()?
},