You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery Ajax POST请求返回HTML代码而非表单值问题求助

问题修复方案

你的代码存在5处核心问题,按优先级修改即可解决异常:

问题1:未阻止表单默认提交行为

你的提交按钮是type="submit",点击触发Ajax请求的同时,表单会执行默认提交逻辑刷新当前页面,导致Ajax请求被中断、甚至直接返回当前页面的HTML代码(就是你看到的报错内容)。
修复方案:
把按钮类型改成普通按钮,不要用submit类型:

<button type="button" name="entree" style="margin-top:10px;" onclick="ajax_request()">send positions</button>

问题2:前后端数据格式不匹配

你前端用JSON.stringify把数据转成JSON字符串发送,contentType设为application/json,但PHP的$_POST全局变量只能解析表单格式(application/x-www-form-urlencoded)的请求,根本拿不到你发的JSON参数。
修复方案:
前端直接传普通对象,不要转JSON,也不需要单独设置contentType:

$.ajax({            
    url :"get_pos.php",
    type :"POST",
    // 直接传对象,jQuery会自动转成表单格式
    data : {
      pos_x : tmp_x,
      pos_z : tmp_z 
    },
    // 删掉原有的contentType配置

问题3:前端数据类型配置错误

你前端配置了dataType: "json",要求后端返回JSON格式数据,但你的后端返回的是纯文本,浏览器解析JSON失败就会直接走error回调。
修复方案:
把dataType改成适配纯文本的类型:

dataType: "text",

问题4:PHP语法错误

PHP中字符串拼接用的是.不是+,你写的$_POST["pos_x"]+"/"+$_POST["pos_z"]会被当成数值加法,得到的结果完全不符合预期。

问题5:后端写入成功后无返回值

你写入文件成功后直接exit(),没有给前端返回任何内容,就算请求成功前端也拿不到数据。


修改后完整代码

前端JS部分修改后代码

function ajax_request(){
    console.log("RequeteAjax pos_unity");

    let tmp_x = $('#pos_x').val();
    let tmp_z = $('#pos_z').val();
    console.log(tmp_x + " " + tmp_z)

    $.ajax({            
        url :"get_pos.php",
        type :"POST",
        data : {
          pos_x : tmp_x,
          pos_z : tmp_z 
        },
        dataType: "text",
        success : function(text,state){
            console.log("operation reussi : "+text);
            alert("tmp : "+text);
        },
        error : function(result, state, error){
            alert("error : \n" + result.responseText);
        },
        complete : function(result, state){
          console.log(tmp_x + "/" + tmp_z)
        }
    })
}

后端get_pos.php修改后代码

<?php
$pos_x = 0;
$pos_z = 0;
$file = "positions_unity.txt";
$error_msg = "ERROR" ;

if( isset($_POST["pos_x"]) && isset($_POST["pos_z"]) ) {
    // 把加号改成点做字符串拼接
    $data = $_POST["pos_x"]."/".$_POST["pos_z"];
    file_put_contents($file, $data);
    // 写入成功后返回数据给前端
    echo $data;
    exit();
} else if(file_get_contents($file) === "" ) {
    file_put_contents($file, $error_msg);
    echo(file_get_contents($file));
    exit();
} else {
    echo(file_get_contents($file));
    exit();
}
?>

内容的提问来源于stack exchange,提问作者DevRipper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 02:06:04