对php脚本的ajax调用返回错误:[对象]

对php脚本的ajax调用返回错误:[对象],php,ajax,object,Php,Ajax,Object,我试图通过AJAX将5个字符串和一些上传的图像作为FormData传递到一个php脚本中,这个php文件与执行AJAX代码的文件相同(由if($mode=“edit”){…}隔离) 包含所有代码的php文件:?page=shop&mode=edit ajax代码: php代码: 当我执行ajax代码时,我在控制台中得到:错误:[object] 为什么我看不到$ajax\u反馈字符串? 如果您需要更多信息,请询问我,我真的为此搜索了数小时。感谢一条很棒的评论,我发现dataType是指定返回格式,

我试图通过AJAX将5个字符串和一些上传的图像作为FormData传递到一个php脚本中,这个php文件与执行AJAX代码的文件相同(由if($mode=“edit”){…}隔离)

包含所有代码的php文件:?page=shop&mode=edit

ajax代码:

php代码:

当我执行ajax代码时,我在控制台中得到:错误:[object]

为什么我看不到$ajax\u反馈字符串?
如果您需要更多信息,请询问我,我真的为此搜索了数小时。

感谢一条很棒的评论,我发现
dataType
是指定返回格式,而不是发送到PHP代码的数据格式。由于我想返回包含php脚本的错误信息的文本字符串的内容,我必须将
数据类型
多部分/表单数据
更改为
文本

$.ajax({
        dataType: 'text',
 });

现在我从php获得了一个完整的html文档(我认为这是正常的),但我只希望返回一个包含错误信息的php字符串变量的内容($ajax\u feedback)。但我想这是一个新问题。

您的
数据类型是指定返回格式,而不是发送到PHP代码的数据格式。您可以将其设置为类似于JSON的值,并在返回数据之前对数据进行JSON_编码,特别是在您可能返回多个值的情况下。现在,Ajax希望返回的是“multipart/formdata”格式,这是您无法响应的。我甚至不确定它是否支持以这种格式返回的数据,所以可能只是混淆了。这是什么?“page=shop&mode=edit”url返回?是json吗?使用
console.log('error:',phpfeedback)instead@droopsnoot我将数据类型更改为“html”,现在它可以工作了,我不知道它需要返回格式!非常感谢,它现在可以工作了。刚才我得到了完整的html文档(php文件的html输出)。我现在发现这很正常。但是如何让(独立的)php代码:if($mode==“edit”){…}只返回字符串的内容:$ajax\u feedback?而不是整个html文档。非常好,很高兴它为您指明了正确的方向。因为这是互联网,我必须指出,如果你只是看一下文档,它都包含在那里:至于只返回一些部分,你需要让你的PHP代码只输出你需要的。Ajax总是捕获服务器端代码的所有输出。你可以将你的“编辑”代码分离到一个单独的PHP文件中,直接从Ajax调用它,但是
require_once()
将它放在它当前所在的原始、更大的PHP文件中。我知道,我以前试过,我知道这是可行的,但在我复杂的网站结构中,如果有办法的话,我更愿意,将ajax调用中的字符串传递给母脚本。我试过这些:
ob_start()
ob_get_contents()
ob_end_clean()但对我来说很难。我还尝试了
$\u会话['ajax\u反馈]但这也不起作用。还有其他提示吗?我觉得您知道的比我多:)当您使用Ajax调用某些PHP(或任何其他服务器端语言)时,服务器端脚本的所有输出都会被捕获并返回到调用Ajax函数。因此,只有一个项目返回的唯一方法是只发送一个项目返回。您可以将所有内容发送回,然后解析返回的数据以获取所需的信息,但这是一种非常混乱的方式,而且非常浪费资源。我不想说我知道的比你多,我只是在学习自己。不过,我相信您可以使用会话变量,因此您可以对此进行研究。
if($mode=='edit'){

    //php code that logs all feedback into $ajax_feedback
    //I skip the phpcode as it is very long but it should be correct

    echo $ajax_feedback;
}
$.ajax({
        dataType: 'text',
 });