簡體   English   中英

AJAX調用PHP文件不起作用

[英]AJAX call to a PHP file not working

我正在練習對本地主機執行簡單的AJAX調用,但是遇到了麻煩。 我想做的是將兩個文本框表單值發送到PHP,然后在通過AJAX成功接收后讓它在我的表單中將消息返回到空div。 我的test.php是這樣的:

<?php

$num = htmlentities(substr($_POST["num"], 0, 7), ENT_QUOTES);
$name = htmlentities(substr($_POST["name"], 0, 50), ENT_QUOTES);

$result = "'$num ' + 'and' + ' $name' + ' values have been successfully AJAXd'";

echo json_encode($result);

jQuery的:

  $("#form").submit(function() {
    event.preventDefault();
    $("#msgcontainer").html("");
    $.ajax({
    url: "test.php",
    data: ("#num").serialize(), ("#name").serialize(),
    contentType: "application/json; charset=utf-8",
    type: "POST",   
    dataType: "json"
      success: function(response) {
        $("#msgcontainer").html(response);
      }
    });
  }

當我嘗試提交時,頁面只是重新加載並將表單值添加到URL。 我已經嘗試解決這一問題了大約一天,因此我們將不勝感激。

編輯:

我通過嘗試每個響應中的內容來弄清楚。 不知道為什么不序列化就可以工作...如果有人知道,請解釋。 有效的jQuery代碼:

  $("#form").submit(function(event) {
    event.preventDefault();
    $("#msgcontainer").html("");
    $.ajax({
    url: "test.php",
    data: {
            num: $("#num").val(),
            name: $("#name").val()
          },
    type: "POST",
    dataType: "json",
      success: function(response) {
        $("#msgcontainer").html(response);
      }
    });
  });

感謝您的幫助!

立即有兩件事脫穎而出:

data: ("#num").serialize(), ("#name").serialize(),
contentType: "application/json; charset=utf-8",

第一個應該是這樣(假設您有兩個文本框):

data: {
    num: $('#num').val(),
    name: $('#name').val()
},

而且contentType:行不應存在,否則您將有一個空的$_POST

最后, event應該是一個函數參數,即:

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

您的AJAX調用中的數據參數有誤,應為:

data: { num: $('#num').val() , name: $('#name').val() }
$("#form").submit(function() {
  event.preventDefault();

event未在任何地方定義。 我猜你的意思是...submit(function(event) {

您應該在JavaScript控制台中看到一個錯誤,告訴您“未定義事件”或“ TypeError:無法讀取未定義的屬性'preventDefault'”。

數據發送不正確。 考慮更換:

data: ("#num").serialize(), ("#name").serialize(),

帶有:

data: $(this).serialize(),

然后,您可能需要編輯PHP腳本,以便將字符串concatenate而不是summing

還可以傳遞event參數或直接使用以下內容:

$("#form").submit(function() {
    var event = arguments[0];
    event.preventDefault();
    ....
});

我懷疑您是否需要contentType: "application/json; charset=utf-8",

早上好,

您必須序列化整個表格,例如:

$("#yourform").serialize();

而不只是逐個字段:

("#num").serialize(), ("#name").serialize()

暫無
暫無

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

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