jQuery $ .post问题(不向PHP发送变量)

I came across a little problem and struggling to solve it... Was wondering if you had any ideas... I have read A LOT of stackoverflow posts about the same issues, but still can't solve mine. I am workin in CodeIgniter.

I am trying to send the variable to PHP controller form the view using jQuery ($.post). Here is mine js code, that is embedded into the view:

$('#testbtn').on('click', function() {
        var orderValue = this.value;
        $.post('http://localhost/codeigniter/welcome/index', {val: 'myValue'}, function(data) {
            alert(data);
        });
    });

Here is the PHP code in the controller:

$a = isset($_POST['val']) ? $_POST['val'] : 'Not set yet.';
echo $a ;

Here is the button: <button id="testbtn" value="thevalue">button</button>

The button is clicked, I get the alert message with the variable and the html code of the whole page, but PHP echo doesn't change, still says: "Not set yet.".

Basically it seems to be very easy, but I can't still find the error...

douji4223
douji4223 谢谢你,我将再次检查文档。
5 年多之前 回复
dqhdz04240
dqhdz04240 这只是对ajax的完全误解,是完全错误的。浏览器供应商在您现在使用它时会在控制台中添加弃用警告是有原因的...这是不好的做法。它阻止整个UI,脚本,用户事件的一切。它当然没有作为调试工具的好处
5 年多之前 回复
dongyong8491
dongyong8491 async设置为false没有错,因为如果有一些服务器时间来搜索并获得正确的数据,最好这样设置。否则你将无法获得正确或至少完整的数据。为了以良好的方式使用它,最好在之前设置加载器gif并在之后将其删除。$.post只是$.ajax的简写,所以我问作者od问题来检查这种方式是否正常。
5 年多之前 回复
dongxie8906
dongxie8906 如果没有发送...找出原因。在解决之前,没有必要调试php。无法想象为什么没有,你的硬编码值有问题
5 年多之前 回复
doushuo1080
doushuo1080 哦,是的..我记得那个,谢谢。但它仍然没有结果。没有数据发送/返回/等...
5 年多之前 回复
dongmo3413
dongmo3413 浏览器中的F12...然后转到网络选项卡...可以查看任何请求的所有细节。将看到发送/返回的数据以及状态,标题,持续时间......在调试ajax时首先要开始
5 年多之前 回复
dongzhiyi2006
dongzhiyi2006 我添加了类型,但页面仍然是静态的。关于转储和浏览器,我不确定,该怎么做...谢谢你的考虑。
5 年多之前 回复
drza10046
drza10046 检查浏览器开发工具中的实际请求以查看正在发送的内容。然后在控制器中执行没有条件的$_POST转储。此外,如果此按钮在表单中,请确保它是type=“button”以避免页面重新加载,因为默认按钮将提交表单
5 年多之前 回复
donqo88682
donqo88682 是的,我现在把它作为回调,但是我没有页面上的动作......我的意思是我需要使用这个变量动态修改页面,但它根本不会改变html,页面保持静态...我需要创建一个SQL查询,而不需要刷新我需要的页面添加项目...
5 年多之前 回复
dongran1779
dongran1779 不遵循@Tpojka建议使用async:false......这是可怕的建议!它会阻止整个页面,并被浏览器供应商弃用。使用$.post没有任何问题
5 年多之前 回复
douyoupingji7238
douyoupingji7238 那你得到什么了吗?
5 年多之前 回复
dongzhonggua4229
dongzhonggua4229 为什么我使用您提供的方法在警报消息中得到结果?(没有回声)
5 年多之前 回复
dongqianzhan8325
dongqianzhan8325 你可以使它成为有条件的。例如,发送类似{val:'myValue',action:'test'}的内容,然后在phpif(isset($_POST['action'])){if($_POST['action']=='test'){...}出口;}
5 年多之前 回复
douzui0143
douzui0143 出口();删除页面,PHP在控制器中(基本上几乎在开头。
5 年多之前 回复
douhua9726
douhua9726 PHP代码应该放在文件的开头,你应该使用exit;回声之后。
5 年多之前 回复
doqdcks3948
doqdcks3948 它似乎就是一切...只是为了确定,这是传递字符串的写法吗?为什么警报给我整个HTML消息?我是否需要按钮周围的表格?为什么我会收到“尚未设定”。警报中的消息?谢谢您的考虑。
5 年多之前 回复
dongle19863
dongle19863 不,我明白了,你想要实现的目标。但是你提供的代码是合法的,应该可行。可能没有足够的数据供我们帮助。问题可能在PHP中,提供的代码可能有所帮助。
5 年多之前 回复
dtmtu02882
dtmtu02882 PHP脚本不接收变量。(你以为我的目标是警告信息?)实际上我没有得到变量-我只得到这个“尚未设置”的消息。
5 年多之前 回复
douguiyan9164
douguiyan9164 所以你得到你想要的东西?问题是什么?
5 年多之前 回复
duanfang7757
duanfang7757 我得到整个页面的html和我要发送的字符串('myValue');
5 年多之前 回复
douhuan1497
douhuan1497 你能解释一下,你有什么警觉的?什么变量?
5 年多之前 回复
dongque5529
dongque5529 没有.......................
5 年多之前 回复
duanqiangwu9332
duanqiangwu9332 另外,在浏览器开发人员控制台中检查网络选项卡上的xhr请求
5 年多之前 回复
doupao1530
doupao1530 这是针对var_dump($_REQUEST):array(2){[“sec”]=>string(5)“(新)”[“col”]=>string(3)“999”};
5 年多之前 回复
donglun1020
donglun1020 结果是一样的,我已经尝试过......
5 年多之前 回复
doucha7329
doucha7329 你能var_dump($_REQUEST)
5 年多之前 回复
drogon982007
drogon982007 使用整个函数$.ajax,而不仅仅是简写$.post来查看结果是否相同。并使用async:false,property。
5 年多之前 回复
drw85135
drw85135 然后我该如何访问它?$a=$this->input->post('val');echo$a;-这也无济于事
5 年多之前 回复
douying3251
douying3251 这看起来不像你应该如何使用codeigniter访问POST信息。
5 年多之前 回复
dpvhv66448
dpvhv66448 <buttonid=“testbtn”value=“thevalue”>按钮</button>(意外错误)
5 年多之前 回复
drxv39706
drxv39706 你能放在#testbtn的HTML代码吗?
5 年多之前 回复

1个回答

Without diving into the code more, this would work.

HTML:

<button id="testbtn" value="thevalue">button</button>

Javascript:

$('#testbtn').on('click', function() {
        var orderValue = {"orderValue": $(this).val()};
        $.ajax({
        url: 'http://localhost/codeigniter/welcome/index',
        method: 'POST',
        data: orderValue,
        success: function(data) { alert(data); }
    });

PHP:

public function index() {
    $a = isset($_POST['orderValue']) ? $_POST['orderValue'] : 'Not set yet.';
    return a;
}

As stated in other comments though, this may not be the best practice.

doutan8506
doutan8506 要么有效。 这是有效的代码。 我用最初的帖子纠正了错误。
5 年多之前 回复
duanchuang6978
duanchuang6978 仅供参考。没有理由使用$ .post赢了; t做同样的事情。 这并不能真正解决任何问题
5 年多之前 回复
dsfhe34889
dsfhe34889 这无效...数据需要包含键/值对。 你只有价值。 data:{orderValue:data:orderValue}
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问