簡體   English   中英

試圖將值從JS發送到PHP - JQuery的$ .ajax()方法無法正常工作

[英]Trying to send a value from JS to PHP - JQuery's $.ajax() method is not working

我想在提交PHP表單時執行JS函數,並且從該函數中,我想將一個值(基於用戶的輸入)返回給PHP,我想在其中回應它。

這是一個SSCCE。 在實際代碼中,不僅僅是回顯值,而且值是JSON對象。

以下是我的代碼。 問題是$.ajax(); 部分不起作用。 alert(name);后瀏覽器中沒有任何操作alert(name); 為什么這不正常? 我怎樣才能解決這個問題?

來自index.php:

<form id="form">
  Name:
  <input id="name" type="text" />
  <input type="Submit" value="Go" />
</form>

來自scripts.js:

$(document).ready(function() {

    $("#form").submit(function(event) {
        event.preventDefault();

        var name = $("#name").val();
        alert(name);

        $.ajax({
            type:'POST',
            url:'echo.php',
            data: {
                nameEntered : name
            }
        });

    });

});

echo.php:

<?php  
if (    isset($_POST["nameEntered"]) && !empty($_POST["nameEntered"])    ) {
    echo $_POST["nameEntered"];
} else {
    echo '$_POST["nameEntered"] is not set.';
}
?>

編輯:

安慰:

在此輸入圖像描述

網絡:

在此輸入圖像描述


編輯2:

$.ajax()添加了以下內容:

,
success: function(){
    alert("success");
},
error : function(){ 
    alert("error");
}

我得到一個警告說success但瀏覽器從不指示echo.php = s


編輯3:

警報說success ,一個? 被添加到瀏覽器中的URL。 最初的URL是http://localhost/Test12/index.php ,它更改為http://localhost/Test12/index.php?

這種方式應該顯示響應。

JAVASCRIPT

$("#form").submit(function(event) {
    event.preventDefault();

    var name = $("#name").val();
    //alert(name);

    $.ajax({
        type:'POST',
        url:'http://localhost/Test12/echo.php',
        data: {
            nameEntered : name
        },
        success : function(data){
            console.log(JSON.parse(data));
        },
        error : function(error){
            console.log('erro', error);
        }
    });

});

PHP

<?php  

if (isset($_POST["nameEntered"]) && !empty($_POST["nameEntered"])) {
    $name = array("nome" => $_POST["nameEntered"]);
    echo json_encode($name);
} else {
    echo '$_POST["nameEntered"] is not set.';
}
?>

嘗試刪除document.ready()或代替.submit使用.on('submit',function(e){}); 或者添加絕對路徑'/page.php'

我認為除了顯示結果的成功調用之外,您還需要在提交函數中添加“event”作為參數

這給你帶來了什么:

$.ajax({
    type:'POST',
    url:'echo.php',
    data: {
        nameEntered : name
    },
    success: function(recd){   // <-------
        alert(recd);           // <-------
    },
    error : function(){ 
        alert("error");
    }
});

作為測試,將echo.php替換為:

<?php  
    echo 'Incoming = ' .$_POST["nameEntered"]. "/r/n";

    if (isset($_POST["nameEntered"]) && !empty($_POST["nameEntered"])) {
        echo 'Here 01';
    } else {
        echo 'Here 02';
    }
?>

您正在調用event.preventDefault(),但是您無法將事件添加到回調的參數中......因此您實際上並未停止提交表單。 這就是你在地址欄中看到問號的原因。

嘗試:

function(e){
    e.preventDefault();
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM