Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IF-ELSE语句不起作用_Javascript_Jquery_Ajax_If Statement - Fatal编程技术网

Javascript 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

我正在尽力创建一个网站。 我需要在ajax中创建一个IF-ELSE。它基本上将输入的内容称为“问候语”,如果用户插入特定文本,则目标是写“是”,否则写“否”

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(数据)或警报(数据);在ajax
success函数中,
@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()?
            },